Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringDataJPAMap将带有一些不同字段的SQL视图复制到单个实体中_Java_Spring Data Jpa - Fatal编程技术网

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();
}