Hibernate与Sql视图的OneToMany关系 - 来自关系的重复记录

时间:2018-01-26 16:17:49

标签: 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> purchaseData;
}

@Entity
@Access(AccessType.FIELD)
@Table(name = "purchase_x_data")
public class BenefitDataView {

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

    @Column(name = "supplier_name")
    private String supplierName;

    @ManyToOne
    @JoinColumn(name = "id_data", insertable = false, updatable = false)
    private PurchaseDataView statement;

}

当我试图通过相关数据购买hibernate条件时,我得到了适当数量的相关数据,但同样的记录在所有孩子中都是重复的...... 例如 - 在online_purchase_view中有一个id为1的记录,在purchase_x_data中有3个记录,其中id_purchase和供应商名称A,B,C比在条件中我将获得purchaseData 3记录,但所有记录都包含供应商名称&#34; A&#34 ; ...

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

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

1 个答案:

答案 0 :(得分:0)

好吧,我错过了很多复杂的描述,因为OneToMany关系视图有id,这不是唯一的(它是来自父视图的id)。问题是Hibernate使用随机实体缓存解析。 从子视图添加id作为行号解决了我的问题。