Matthew Broadhead wrote > so if the managedbean is not an ejb anymore and therefore the > transaction is closed how does it work for eclipselink? do they use > some magic? are there any plans for implementing this "feature" in the > future? after spending a few months migrating to myfaces and openjpa on > the suggestion of romain i now find that openjpa cannot lazy load > entities from jsf which is fairly disappointing to say the least.
Indeed it a killer feature, it makes our life easier. It is the main point for us to stay with it. Matthew Broadhead wrote > is my best route to go back to eclipselink? We are using the webprofile version of the TomEE 7.01 with: hibernate validation; mojara; eclipselink. deltaspike-data-module. Now studying how OpenJPA do things and reading the "LazyInitializationException Hell" [1] [1] https://www.google.com.br/search?client=firefox-b&q=LazyInitializationException&oq=LazyInitializationException&gs_l=serp.3...26714.27166.0.27503.2.2.0.0.0.0.0.0..0.0....0...1c.1.64.serp..2.0.0.G4YKt3zUkdE On 09/11/2016 17:40, Mark Struberg wrote: > Oki all clear. The internal EntityManager will get closed when you leave > the outer @Stateless method. > @Stateless EJBSs really are nothing else than beans with an interceptor > which opens and commits the transaction and EntityManager on the outermost > EJB level. > > Since the @ManagedBean is not an EJB anymore you don't have any > transaction nor EntityManager open anymore in your render_response phase > in JSF. Which means that OpenJPA cannot provide lazyloading for you. > > I personally prefer to use the entitymanager-per-request patter and using > CDI with a @RequestScoped EntityManager. But that might be a bigger change > in architecture for you. > Other options are: > > * touching the required bits in your DAO > > * using eager fetching > * using a fetch-plan > * using DTOs > > LieGrue, > strub > > > > > >> On Wednesday, 9 November 2016, 17:31, Matthew Broadhead >> <matthew.broadhead@.co> wrote: >>> sorry for the delay in replying i was very busy >> as a simple example there is a generic Dao class to return the results >> of a namedquery >> @Stateless >> public class DAO { >> @PersistenceContext(unitName = "widgetDataSource") >> private EntityManager em; >> .... >> @SuppressWarnings("unchecked") >> public <E> List<E> namedFind(Class<E> clazz, String >> query) { >> return em.createNamedQuery(query, clazz).getResultList(); >> } >> .... >> } >> call the namedFind from another stateless >> @Stateless >> public class WidgetDAO { >> @EJB >> private DAO dao; >> ... >> public List<Widget> findAll() { >> return dao.namedFind(Widget.class, "Widget.findAll"); >> } >> .... >> } >> this is loaded into a managedbean >> @ManagedBean >> @ViewScoped >> public class WidgetBean { >> @EJB >> private WidgetDAO widgetDao; >> private List<Widget> widgetList; >> public void onload(){ >> setWigdetList(widgetDao.fildAll()); >> } >> ...setter getter of widgetList >> } >> which is supposed to display in jsf >> <?xml version="1.0" encoding="UTF-8"?> >> <ui:composition xmlns="http://www.w3.org/1999/xhtml" >> xmlns:h="http://java.sun.com/jsf/html" >> xmlns:ui="http://java.sun.com/jsf/facelets" >> xmlns:f="http://java.sun.com/jsf/core" >> template="/WEB-INF/include/layout.xhtml"> >> ... >> <ui:repeat var="widget" >> value="#{widgetBean.widgetList}"> >> <ui:repeat var="subWidget" >> value="#{widget.subWidgets}"> >> ...where are the sub widgets? >> </ui:repeat> >> </ui:repeat> >> </ui:composition> >> >> Like i say if i loop through the widgets (or maybe the subwidgets as >> well) it then loads in the JSF. so it lazy loads in java but not in >> JSF. should i change to eager when i generate the entities or is there >> something else i can do? is it supposed to work the same as eclipselink? >> >> >> On 02/11/2016 08:06, Mark Struberg wrote: >>> Hi Matthew! >>> >>> Now I'm back on my notebook. >>> What transaction mechanism are you using? JTA or ResourceLocal? >>> And what technology to control the transactions? EJBs? CDI? Spring? >>> >>> It boils down to be more a question about appliction architecture than >> about OpenJPA, but still very important to cover. So just go ahead, I'm >> pretty sure we can help you. >>> LieGrue, >>> strub >>> >>>> Am 24.10.2016 um 10:34 schrieb Matthew Broadhead >> <matthew.broadhead@.co>: >>>> HI, I am using TomEE 7.0.1 and I just switched from Plume to Plus. I >> was using eclipselink and now I am converting to OpenJPA. When I fetch a >> set of >> entities and then try to iterate through their associations in JSF the >> list is >> empty. in eclipselink they were populated by default. if i loop through >> the >> entities in Java before displaying in JSF then they are populated (i >> guess they >> get lazy loaded). is there a setting that needs to be changed? like >> generating >> with all associations as eager or setting a flag in persistence.xml? >> what would >> give the same default as eclipselink? seemed like an easy question but i >> could >> not find anything by searching. >> -- View this message in context: http://openjpa.208410.n2.nabble.com/fetching-associations-tp7589828p7589916.html Sent from the OpenJPA Users mailing list archive at Nabble.com.