我尝试从具有完全相同列的多个表(或视图)中读取相同的实体。视图是基于实体的聚合,从而产生相同的实体。
例如:
@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;
}
视图如下所示:
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;
如何从表和视图中读取Foo的实例? 我还需要获取引用的Bar实例。
答案 0 :(得分:0)
即使有可能,我认为以这种方式阅读并不是一个好主意。在原则上,实体是一个信息单元。表是实体从内存中消失时存储数据的实体持久性。
JPA可以在一个以上的表中存储一个实体,但这不是您想要的。这适用于单独的索引,大数据,性能等。
我建议使用与Foo相同的字段创建一个投影类(表示视图),并创建第二个只读实体,用于从视图加载数据。之后,您可以创建一个映射器函数来映射表和/或视图中的数据。