Spring Data Jpa實現(xiàn)自定義repository轉(zhuǎn)DTO
近期項目中需要 關(guān)聯(lián) 幾張表再把字段轉(zhuǎn)出來,在這里記錄以下,我感覺網(wǎng)上寫的都不太規(guī)范和清晰。
@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 來實現(xiàn)。
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis中typeAliases標簽和package標簽使用
這篇文章主要介紹了Mybatis中typeAliases標簽和package標簽使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring中為bean指定InitMethod和DestroyMethod的執(zhí)行方法
在Spring中,那些組成應用程序的主體及由Spring IoC容器所管理的對象,被稱之為bean,接下來通過本文給大家介紹Spring中為bean指定InitMethod和DestroyMethod的執(zhí)行方法,感興趣的朋友一起看看吧2021-11-11
Curator實現(xiàn)zookeeper的節(jié)點監(jiān)聽詳解
這篇文章主要介紹了Curator實現(xiàn)zookeeper的節(jié)點監(jiān)聽詳解,Curtor框架中一共有三個實現(xiàn)監(jiān)聽的方式,一種是NodeCache監(jiān)聽指定節(jié)點,一種是pathChildrenCache監(jiān)聽子節(jié)點,一種是TreeCache可以監(jiān)控所有節(jié)點 相當于以上兩種的合集,需要的朋友可以參考下2023-12-12
IDEA設置生成帶注釋的getter和setter的圖文教程
通常我們用idea默認生成的getter和setter方法是不帶注釋的,當然,我們同樣可以設置idea像MyEclipse一樣生成帶有Javadoc的模板,具體設置方法,大家參考下本文2018-05-05

