これは、このトピックで説明achiveする方法トリック:http://justonjava.blogspot.it/2010/09/lazy-one-to-one-and-one-to-many.html
私は、PostgreSQL 9.3、Hibernateのv.4.3.5とJPAのv.1.5.0でそれをchechedさしました。魅力のように働いた。 例:
public class Attachment implements FieldHandled{
@Transient
private FieldHandler fieldHandler;
...
...
@Lob
@Column(name=CONTENT, nullable=false)
@Basic(fetch = FetchType.LAZY, optional = false)
private byte[] content;
...
...
public byte[] getContent() {
if(fieldHandler!=null){
return (byte[])fieldHandler.readObject(this, "content", content);
}
return content;
}
public void setContent(byte[] content) {
if(fieldHandler!=null){
fieldHandler.writeObject(this, "content", this.content, content);
return;
}
this.content = content;
}
}
注:CGLIBを使用している場合は、同じアプローチで、代わりにFieldHandledのnet.sf.cglib.transform.impl.InterceptFieldEnabledを実装します。
ありがとうございました。しかし、これらのアプローチは私のためには機能しません。大きな問題! '@Lob @Basic(fetch = FetchType.LAZY)Blobプライベートバイト[]イメージ;' EntityManagerはこのプロパティを保持できません。すべてのフィールドを保持し、 'image'はnullのままです。私は具体的なクラス 'SerialBlob'を使っています – CelinHC