我有两个视图实体,它们是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();
答案 0 :(得分:0)
好吧,我错过了很多复杂的描述,因为OneToMany关系视图有id,这不是唯一的(它是来自父视图的id)。问题是Hibernate使用随机实体缓存解析。 从子视图添加id作为行号解决了我的问题。