A @OneToMany relationship with a Map loads the data only on the first call when specifying FetchType.LAZY;
{ quote} { @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "mStockLocation") @MapKeyJoinColumn(name="EXTERNALARTICLE_ID") private Map<ExternalArticle, ExternalArticleStockLocation> mExternalArticleStockLocationMap = new LinkedHashMap(); {quote } } The first call for the map returns the Map with data;
{quote} public Map<ExternalArticle, ExternalArticleStockLocation> getExternalArticleStockLocationMap() { return mExternalArticleStockLocationMap; }{quote}
The second call returns an empty HashMap. The problem 'disappears' when i switch to FetchType.EAGER or when i save the HashMap at the call;
{quote} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public Map<ExternalArticle, ExternalArticleStockLocation> getExternalArticleStockLocationMap() { // Bug fix! setExternalArticleStockLocationMap(mExternalArticleStockLocationMap);
return mExternalArticleStockLocationMap; }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void setExternalArticleStockLocationMap(Map<ExternalArticle, ExternalArticleStockLocation> pExternalArticleStockLocationMap) { mExternalArticleStockLocationMap = pExternalArticleStockLocationMap; }{quote} |
|