![](/img/trans.png)
[英]Spring Jpa Bulk Insert whole data or Update some fields of entity if already available
[英]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.