Entity Manager を使用して Lazy フィールドを取得するにはどうすればよいですか? ここに私のコードスニペットがあります
public class Internet implements Serializable{
int id;
// related fields
@ManyToOne (fetch=FetchType.LAZY)
Browsers brow;
//related public getters and setters.
}
これは私の Browser Hibernate クラスです。
public class Browser implements Serializable{
int id;
String name;
//and some other useful fields.
//here public getters and setters.
public String getName(){
return name;
}
public void setName(String name){
this.name = name
}
//and few more.
}
私の要件は、Internet.id を使用して EntityManger の find メソッドを使用して Browser のインスタンスを取得するときに、ブラウザーの名前が必要であるということです。
これら 2 つのクラスは、異なるパッケージに含まれています。だから私は browser.name に直接アクセスできません。ブラウザの名前が欲しいです。プログラムをデバッグすると、browser.name が null になっています。EntityManager を使用して browser.name の値を取得する方法はありますか。
この質問に関連する投稿をいくつか読みましたが、何の手がかりも得られませんでした。どんな体でも私を助けることができますか?
これは私のページといくつかのことを使用している私のコードです:
InternateObjectUsingPage usingPage = (InternateObjectUsingPage)pageWithName(InternateObjectUsingPage.class.getName());
_em = EntityManager.createEntityManager();
Internet ipReg = _em.find(Internet.class, _currentRow.getIpRegId()) ; // _currentRow.getInRegId() is id.
ipReg.getBrowser(); // recently i added as per the suggestion.
if(ipReg != null){
_refresh = true;
usingPage.setInternet(ipReg);
return usingPage;
}
_em.close();
それが私のコードの使用方法ですが、違いはわかりませんでした。