Hibernate Spring数据JPA从多个表或视图中读取相同的实体

Hibernate Spring数据JPA从多个表或视图中读取相同的实体,hibernate,spring-data-jpa,Hibernate,Spring Data Jpa,我尝试从具有完全相同列的多个表(或视图)中读取相同的实体。视图是基于产生相同实体的实体的聚合 例如: @Entity @Table("bar") public class Bar(){ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(mappedBy = "bar") private Set<Foo> foos; } @Enti

我尝试从具有完全相同列的多个表(或视图)中读取相同的实体。视图是基于产生相同实体的实体的聚合

例如:

@Entity
@Table("bar")
public class Bar(){
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id; 
    @OneToMany(mappedBy = "bar") 
    private Set<Foo> foos;
}

@Entity
@Table("foo")
public class Foo(){
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private Long id;
   private int units;
   private String name;

   @ManyToOne
   private Bar bar; 

}
如何从表和视图中读取Foo实例?
我还需要获取引用的条实例。

即使有可能,我认为以这种方式阅读也不是一个好主意。原则上,实体是一个信息单元。表是实体从内存中消失时存储数据的实体持久性

JPA可以在多个表中存储一个实体,但这不是您想要的想法。这是针对单独的索引、大数据、性能等的

我建议创建一个投影类(表示视图),该类具有与Foo相同的字段,并创建第二个只读实体,用于从视图加载数据。之后,您可以创建映射器函数来映射表和/或视图中的数据

create view sum_foo_with_same_name as
  select
    sum(units) AS units,
    name AS name,
    bar_id AS bar_id
  from foo
  group by name, bar_id;