Spring Data Jpa實現自定義repository轉DTO
阿新 • • 發佈:2020-08-05
近期專案中需要 關聯 幾張表再把欄位轉出來,在這裡記錄以下,我感覺網上寫的都不太規範和清晰。
@Entity @SqlResultSetMapping( name="TestMapping",entities = { @EntityResult( entityClass = com.xxx.xx.data.model.TestEntity.class,fields = { @FieldResult(name="id",column="id"),@FieldResult(name="localTime",column="time"),@FieldResult(name="maximumAppointment",column="maxAppointment"),} ) } ) @NamedNativeQuery(name="getTestQuery",query="select tableC.id as id,tableB.time,tableC.maximumAppointment as maxAppointment from tableB " + " inner join tableA on tableA.id = tableB.tableAId " + " inner join tableC on tableB.id = tableC.tableBId " + " inner join custom on custom.id = tableA.customId " + "where " + " tableA.locationId = :locationId" + " and custom.id = :customId" + " and tableB.deleted = false ",resultSetMapping="TestMapping") @Data public class TestEntity { @Id private String id; private LocalTime localTime; private Integer maximumAppointment; }
需要宣告介面:
@Repository public interface TestEntityRepository extends JpaRepository<TestEntity,String> { @Query(name="getTestQuery") List<TestEntity> getTestQuery(String locationId,String customId); }
若不想宣告介面,那可以用EntityManager 來實現。
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。