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;