Java SpringDataJPAMap将带有一些不同字段的SQL视图复制到单个实体中
我有三个视图,除了每个视图中有一个字段外,它们返回的字段几乎相似,我希望为这些视图重用相同的实体Java SpringDataJPAMap将带有一些不同字段的SQL视图复制到单个实体中,java,spring-data-jpa,Java,Spring Data Jpa,我有三个视图,除了每个视图中有一个字段外,它们返回的字段几乎相似,我希望为这些视图重用相同的实体 @Entity public class MyEntity { @Id @Column(name="id") private String id; @Column(name="fieldA") private String fieldA; @Column(name="fieldB") private String fieldC; @Colu
@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();
@存储库
公共界面视图1存储扩展了JPA存储{
@查询(nativeQuery=true)
MyEntity retrieveView1();
第二存储库
@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();
@存储库
公共界面View2Repository扩展了JpaRepository{
@查询(nativeQuery=true)
MyEntity retrieveView2();
第三存储库
@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();
@存储库
公共界面View3Repository扩展了JpaRepository{
@查询(nativeQuery=true)
MyEntity retrieveView3();
当我执行它时,它返回无效的列名,因为它试图映射所有字段,包括不返回的字段
有没有办法为这三个查询重用同一个实体
PS.示例缩短了视图,实体有更多的字段使用
公共接口实体字段a{
字符串getFieldA();
}
公共接口EntityFieldAB{
字符串getFieldA();
字符串getFieldB();
}
公共接口实体字段AC{
字符串getFieldA();
字符串getFieldC();
}
@存储库
公共界面视图1存储扩展了JPA存储{
@查询(“从MyEntity ma中选择新MyEntity(me.fieldA))
EntityFieldA retrieveView1();
@查询(“从MyEntity ma中选择新MyEntity(me.fieldA,me.fieldB))
EntityFieldAB retrieveView2();
@查询(“从MyEntity ma中选择新MyEntity(me.fieldA,me.fieldC))
EntityFieldAC retrieveView3();
}