Hibernate 使用sql视图休眠OneToMany关系-从关系中复制记录

Hibernate 使用sql视图休眠OneToMany关系-从关系中复制记录,hibernate,one-to-many,criteria,many-to-one,sql-view,Hibernate,One To Many,Criteria,Many To One,Sql View,我有两个视图实体,它们是sql视图的表示形式: @Entity @Access(AccessType.FIELD) @Table(name = "online_purchase_view") public class PurchaseView { @Id @Column(name = "id") private Long id; @OneToMany(mappedBy = "data") private List<PurchaseDataView

我有两个视图实体,它们是sql视图的表示形式:

@Entity
@Access(AccessType.FIELD)
@Table(name = "online_purchase_view")
public class PurchaseView {

    @Id
    @Column(name = "id")
    private Long id;

    @OneToMany(mappedBy = "data")
    private List<PurchaseDataView> purchaseData;
}
当我尝试使用hibernate获取相关数据时,我获得了适当数量的相关数据,但相同的记录在其所有子项中都是重复的。。。 例如,在在线采购中查看一条id=1的记录,在采购数据中查看3条id为采购和供应商名称A、B、C的记录,我将在采购数据中查看3条记录,但所有记录均为供应商名称“A”

我的标准很简单,只是得到:

sessionFactory.getCurrentSession().createCriteria(PurchaseView.class).list();

好的,我遗漏了很多复杂的描述,因为OneToMany关系视图有id,它不是唯一的(它是来自父视图的id)。问题是Hibernate正在用随机实体缓存解析。 从“子视图”中将id添加为行号解决了我的问题

sessionFactory.getCurrentSession().createCriteria(PurchaseView.class).list();