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
>> &lt;matthew.broadhead@.co&gt;:
>>>>   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.

Reply via email to