[英]JPA 2 different native queries with same class as entity
我是 JPA 的新手。 目前我正在编写带有@Query
注释的本机查询。 我有一个类似于下面的 class
@Column(name="field1")
Private String field1;
@Column(name="field2")
Private String field2;
@Column(name="field3")
Private String field3;
我正在编写 2 个查询,其中 1 个查询的字段 2 包含在 select 投影中,而其他不包括字段 2。如何对两个查询使用相同的 class? 我尝试@Transient
注释。 但它将两个查询的值都设为 null。
你有很多选择可以做到这一点。
选项 1:不使用 @Query 的 Spring 数据 JPA 的预测
interface MyProjection{
String getField1();
String getField3();
}
public interface MyRepository extends JpaRepository<Entity, Integer> {
List<MyProjection> findAll();
}
选项 2:Spring 数据 JPA 与 @Query 的预测(非常类似于选项 1)
interface MyProjection{
String getField1();
String getField3();
}
public interface MyRepository extends JpaRepository<Entity, Integer> {
@Query("SELECT p FROM Entity p")
List<MyProjection> customFindEntity();
}
选项 3:来自 Spring 数据 JPA 的投影,带有@Query,没有任何接口
public interface MyRepository extends JpaRepository<Entity, Integer> {
@Query("SELECT p.field1, p.field2 FROM Entity p")
List<Object> customFindEntity();
}
选项 4:来自 Spring 数据 JPA 的投影与 @Query 原生查询(非常类似于选项 2)
interface MyProjection{
String getField1();
String getField3();
}
public interface MyRepository extends JpaRepository<Entity, Integer> {
@Query("SELECT field1, field3 FROM Entity p", nativeQuery = true)
List<MyProjection> customFindEntity();
}
选项5:使用object数组的Native查询和返回列表
您必须从数组列表中提取数据。
public interface MyRepository extends JpaRepository<Entity, Integer> {
@Query("SELECT field1, field3 FROM Entity p", nativeQuery = true)
List<Object[]> customFindEntity();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.