2
JPAで遅延をフェッチするように設定されたコレクションを取得できないという問題があります。ここでは、エンティティが定義されているか、次のとおりです。JPAでの問題が遅延読み込みコレクションをロードしない
レポートエンティティ
//bi-directional many-to-one association to Host
@OneToMany(mappedBy="report", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
private Set<Host> hosts;
私はホストがメモリとホストにロードするように設定を取得することはできませんいくつかの理由
//bi-directional many-to-one association to Report
@ManyToOne
@JoinColumn(name="INCIDENT_ID")
private Report report;
ホストエンティティは常にnullです。上記から
public void loadHosts(Report report)
{
PersistenceUtil unitUtil = getEntityManager().getEntityManagerFactory().getPersistenceUnitUtil();
System.out.println("isLoaded(report, \"hosts\"): " + unitUtil.isLoaded(report, "hosts"));
initializeCollection(report.getHosts());
System.out.println("isLoaded(report, \"hosts\"): " + unitUtil.isLoaded(report, "hosts"));
}
private void initializeCollection(Collection<?> collection)
{
if(collection == null)
{
return;
}
collection.iterator().hasNext();
}
出力:
SystemOut O isLoaded(report, "hosts"): false
SystemOut O isLoaded(report, "hosts"): false
に任意のアイデアを、私はStackOverflowのポストに、次の見つけましたが、それは動作しませんか?
この場合、データベースから既存のレポートを読み込みます。レポートおよび関連ホストは、これらのエンティティを使用してデータベースに書き込まれました。私はreport.getHosts()を呼び出そうとしましたが、上のコードの行でそれをやっています:initializeCollection(report.getHosts()); – bnorwood
申し訳ありませんが、私はその行を逃しました。 –
fetchtype.eagerは依然として役立つでしょうか? –