Hi!
Supose the next structure or class diagram: class A contains a collection of class B and class B contains a collection of class C and finally class C contains a collection of class D.
All this collections mappings are lazy="true" in all classes A,B,C.
I can load dynamically the instances of B in class A in this way:
Code:
Criteria criteria = session.createCriteria(A.class);
criteria.setFetchMode("collectionB", FetchModel.JOIN);
But, my problem is, I want to load all graph of instances B,C,D: so I try with the next code:
Code:
Criteria criteria = session.createCriteria(A.class);
criteria.setFetchMode("collectionB", FetchModel.JOIN);
criteria.createCriteria("collectionB", aliasB)
.setFetchMode("collectionC", FetchModel.JOIN);
criteria.createCriteria("aliasB.collectionC", aliasC)
.setFetchMode("collectionD", FetchModel.JOIN);
This code is ok, but the result of criteria execution is a collection of many repeated instances of class A. This is logic because the generated SQL use JOIN with JOIN ... etc.
Finally, Anybody know if exist any solution to solve this problem ?
I can do it with differents criterias but the architecture of the system not allow this solution.
Thanks in advance !
Fede