简体   繁体   English

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

[英]JPA 2 different native queries with same class as entity

I am new to JPA.我是 JPA 的新手。 Currently I am writing a native query with @Query annotation.目前我正在编写带有@Query注释的本机查询。 I have a class similar to the below我有一个类似于下面的 class

@Column(name="field1")
Private String field1;

@Column(name="field2")
Private String field2;

@Column(name="field3")
Private String field3;

I am writing 2 queries where 1 query has field 2 included in select projection and other does not include field 2. How can I use same class for both of the queries?我正在编写 2 个查询,其中 1 个查询的字段 2 包含在 select 投影中,而其他不包括字段 2。如何对两个查询使用相同的 class? I tried @Transient annotation.我尝试@Transient注释。 But it made values of both queries as null.但它将两个查询的值都设为 null。

You have lot of options to do that.你有很多选择可以做到这一点。

Option 1: Projections from Spring Data JPA without @Query选项 1:不使用 @Query 的 Spring 数据 JPA 的预测

interface MyProjection{
    String getField1();
    String getField3();
}
public interface MyRepository extends JpaRepository<Entity, Integer> {

    List<MyProjection> findAll();
}

Option 2: Projections from Spring Data JPA with @Query (quite similar to Option 1)选项 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();
}

Option 3: Projections from Spring Data JPA with @Query without any interface选项 3:来自 Spring 数据 JPA 的投影,带有@Query,没有任何接口

public interface MyRepository extends JpaRepository<Entity, Integer> {
    @Query("SELECT p.field1,  p.field2 FROM Entity p")
    List<Object> customFindEntity();
}

Option 4: Projections from Spring Data JPA with @Query an native query (quite similar to Option 2)选项 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();
}

Option 5: Use Native query and return list of object array选项5:使用object数组的Native查询和返回列表

You have to extract your data from the list of array.您必须从数组列表中提取数据。

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