我有两个非常简单的POJO,我之间只有一对一的映射。
我写的代码如下。
@OneToOne(optional= false,cascade = CascadeType.ALL, mappedBy="contact", fetch=FetchType.LAZY)
@org.hibernate.annotations.LazyToOne(org.hibernate.annotations.LazyToOneOption.NO_PROXY)
private Comment mComment;
@OneToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL )
@JoinColumn(name="EW_CNTC_ID")
private Contact contact;
我正在设置评论联系pojo,最后我正在保存contact.java
如果我保留@OneToOne(可选= false,我得到dataintegrityexception,constraintvoilationexception
如果我改变了@OneToOne(可选=真,那么它正在工作。
我认为如果可选是假的,它试图插入联系人,它发现注释它试图插入注释,但它有引用联系它必须设置外键而不插入联系人它不能保留外键。 。 如果可选,则可以插入联系人而不进行评论,并且在联系人的外键列中设置为联系人生成的PK .---无论如何,此问题已得到解决。
我正在加载联系人的另一件事我需要延迟加载评论,这是没有工作可以帮助这个,我严格需要延迟加载评论,因为性能问题。
提前致谢。
答案 0 :(得分:0)
我们在hibernate 3中遇到过这个问题.Hibernate 4解决了这个问题。
如果您只想加载不是评论的联系人,请尝试这样做(暗示将其更改为多人关系)。
@ManyToOne(fetch=FetchType.LAZY)
private Comment mComment;