次のような永続化可能なクラスがあります。
@PersistenceCapable(detachable = "true")
public class MyClass {
...
@Persistent(defaultFetchGroup = "true")
@Element(dependent = "true")
private Set<Key> mySet = new HashSet<Key>();
...
}
最初に永続化してから、次のように読み返します。
pm.getFetchPlan().setGroup(FetchPlan.DEFAULT);
pm.getFetchPlan().setMaxFetchDepth(1);
myInstance = pm.getObjectById(MyClass.class, key);
奇妙なのは、これがサーバーの再起動後に初めて正常に機能することです。ただし、2 回目にクエリを作成すると、mySet は null のままです。
私はArrayListで同じことを試みてきましたが、うまくいきません。私はこのような動作を引き起こす原因について完全に無知であるため、何が原因であるかについての漠然とした指摘をいただければ幸いです。
アップデート:
修正を見つけましたが、なぜそれが機能するのかわかりません。User のコピー コンストラクターを追加し、読み取り後にインスタンスをコピーすると、一貫して動作します。常に同じインスタンスを返すキャッシュがあると思いますが、プログラムをステップ実行すると、ロールを null に設定するコードが見つかりません。これは私が見落としている副作用である可能性がありますか、それとも私が理解していないより根本的な問題がありますか?