繁体   English   中英

JPA 2 个不同的本地查询,具有相同的 class 作为实体

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM