簡體   English   中英

Spring 數據 Jpa map 將 Z9778840A0100CB30C982876741B0B5A2 多個不同的字段合並到單個實體eZ 字段中

[英]Spring data Jpa map multiples SQL views with some differente fields into a single entity

我有三個視圖,它們返回幾乎相似的字段,除了每個視圖中的一個,我想為這個視圖重用相同的實體。

@Entity
public class MyEntity {

    @Id
    @Column(name="id") private String id;   
    @Column(name="fieldA") private String fieldA;   
    @Column(name="fieldB") private String fieldC;   
    @Column(name="fieldC") private String fieldC;   
}

我正在執行的視圖

第一視角:

select id, fieldA from myview;

第二種觀點:

select id, fieldA, fieldB from myview2;

第三視圖:

select id, fieldA, fieldC from myview3;

第一個存儲庫

@Repository
public interface View1Repository extends JpaRepository<MyEntity, String> {

@Query(nativeQuery=true)
MyEntity retrieveView1();

第二個存儲庫

@Repository
public interface View2Repository extends JpaRepository<MyEntity, String> {

@Query(nativeQuery=true)
MyEntity retrieveView2();

第三存儲庫

@Repository
public interface View3Repository extends JpaRepository<MyEntity, String> {

@Query(nativeQuery=true)
MyEntity retrieveView3();

當我執行它時,它返回 Invalid Column Name,因為它嘗試 map 所有字段,包括未返回的字段

有沒有辦法為這三個查詢重用相同的實體..

PS。 這些示例縮短了視圖,並且實體具有更多字段

使用投影

public interface EntityFieldA {
    String getFieldA();
}


public interface EntityFieldAB {
    String getFieldA();

    String getFieldB();
}

public interface EntityFieldAC {
    String getFieldA();

    String getFieldC();

}

@Repository
public interface View1Repository extends JpaRepository<MyEntity, String> {

    @Query("select new MyEntity (me.fieldA) from MyEntity ma")
    EntityFieldA retrieveView1();

    @Query("select new MyEntity (me.fieldA, me.fieldB) from MyEntity ma")   
    EntityFieldAB retrieveView2();

    @Query("select new MyEntity (me.fieldA, me.fieldC) from MyEntity ma")
    EntityFieldAC retrieveView3();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM