Spring Data Jpa 自定义 repository 转 DTO

Posted 1994jinnan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Data Jpa 自定义 repository 转 DTO相关的知识,希望对你有一定的参考价值。

近期项目中需要 关联 几张表再把字段转出来,在这里记录以下,我感觉网上写的都不太规范和清晰。

@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();
 推荐阅读:https://www.360wenxue.cn/sitemap.html

以上是关于Spring Data Jpa 自定义 repository 转 DTO的主要内容,如果未能解决你的问题,请参考以下文章

在 JPA 存储库(Spring Data Jpa)中执行自定义查询

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询

自定义查询 Spring Data JPA + REST

spring data jpa自定义bean字段映射

Spring Data JPA - JpaRepository 中的自定义排序

spring data jpa 自定义sql in查询加判断