Here's the design:
EJBs for business logic, JPA @Enitities for object (domain) model, Web services for a public interface.
The model is quite complex.
Even in the presentation (web services) I use the entities model.
The problem comes from that in the presentation a call is made to an EJB. The EJB returns an entity which after the call is ended gets disconnected. So all collections (@OneToMany) cannot be loaded.
EAGER fetching was the solution but then half of the database was loaded on a single method call. And eventually I got to a really ugly MySQL limitation (A query with more than 61 joins (inner selects + cases + at least 40 left outer joins) and a length of 436 lines.
Now before returing the entity in the EJB method via Reflection I initialize all the collections I need. Ugly.
What I need and would perfectly fit me would be an eager fetching only until some level of deepness is reached, then switch to lazy. Then a level of 2 or 3 would be perfect.
Currently I don't of something like that existing.
If someone has an idea, please let me know.