[ 
https://issues.jboss.org/browse/RF-12608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ken H updated RF-12608:
-----------------------

    Description: 
Changes to the selectManyHelper class in 4.2.3+ causes a lazy loading exception 
in hibernate when the backing collection is persistent and is not eagerly 
loaded.

The problem seems to be that fetching the collection in 
SelectManyHelper.getConvertedValue bypasses the PersistentSet getter that would 
normally issue the lazy load request.

Defining the collectionType (e.g. java.util.ArrayList) bypasses this issue.

Ideally this method would detect Hibernate proxy collections and handle them 
appropriately. However, I realize that may cause a dependency so perhaps it 
would be enough to document this option and situation in the component 
reference.

The stack trace for the exception is below:
{code}
[org.richfaces.log.Context] (http-localhost-127.0.0.1-8080-1) failed to lazily 
initialize a collection, no session or session was closed: 
org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection, no session or session was closed
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:393)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:385)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:378)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.write(AbstractPersistentCollection.java:208)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:291) 
[hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.richfaces.renderkit.SelectManyHelper.getConvertedValue(SelectManyHelper.java:350)
 [richfaces-components-ui-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.renderkit.SelectManyRendererBase.getConvertedValue(SelectManyRendererBase.java:108)
 [richfaces-components-ui-4.2.3.Final.jar:4.2.3.Final]
        at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIInput.validate(UIInput.java:960) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1233) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIInput.processValidators(UIInput.java:698) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
 [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIForm.processValidators(UIForm.java:253) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
org.richfaces.context.PartialViewExecuteVisitCallback.visit(PartialViewExecuteVisitCallback.java:55)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:321)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1612) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIForm.visitTree(UIForm.java:371) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.executeComponents(ExtendedPartialViewContextImpl.java:237)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartialExecutePhase(ExtendedPartialViewContextImpl.java:217)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:196)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1170) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
 [jsf-impl-2.1.7-jbossorg-2.jar:]
{code}

  was:
Changes to the selectManyHelper class in 4.2.3+ causes a lazy loading exception 
in hibernate when the backing collection is persistent and is not eagerly 
loaded.

The problem seems to be that fetching the collection in 
SelectManyHelper.getConvertedValue bypasses the PersistentSet getter that would 
normally issue the lazy load request.

Defining the collectionType (e.g. java.util.ArrayList) bypasses this issue.

Ideally this method would detect Hibernate proxy collections and handle them 
appropriately. However, I realize that may cause a dependency so perhaps it 
would be enough to document this option and situation in the component 
reference.

{code}
[org.richfaces.log.Context] (http-localhost-127.0.0.1-8080-1) failed to lazily 
initialize a collection, no session or session was closed: 
org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection, no session or session was closed
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:393)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:385)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:378)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.AbstractPersistentCollection.write(AbstractPersistentCollection.java:208)
 [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:291) 
[hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at 
org.richfaces.renderkit.SelectManyHelper.getConvertedValue(SelectManyHelper.java:350)
 [richfaces-components-ui-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.renderkit.SelectManyRendererBase.getConvertedValue(SelectManyRendererBase.java:108)
 [richfaces-components-ui-4.2.3.Final.jar:4.2.3.Final]
        at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIInput.validate(UIInput.java:960) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1233) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIInput.processValidators(UIInput.java:698) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
 [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIForm.processValidators(UIForm.java:253) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
org.richfaces.context.PartialViewExecuteVisitCallback.visit(PartialViewExecuteVisitCallback.java:55)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:321)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1612) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIForm.visitTree(UIForm.java:371) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.executeComponents(ExtendedPartialViewContextImpl.java:237)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartialExecutePhase(ExtendedPartialViewContextImpl.java:217)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:196)
 [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
        at 
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1170) 
[jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
        at 
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
 [jsf-impl-2.1.7-jbossorg-2.jar:]
{code}


    
> pickList without collectionType results in failure to lazily load
> -----------------------------------------------------------------
>
>                 Key: RF-12608
>                 URL: https://issues.jboss.org/browse/RF-12608
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.2.3.Final, 4.3.0.M2
>            Reporter: Ken H
>            Assignee: Juraj Húska
>              Labels: regression, waiting_on_user
>
> Changes to the selectManyHelper class in 4.2.3+ causes a lazy loading 
> exception in hibernate when the backing collection is persistent and is not 
> eagerly loaded.
> The problem seems to be that fetching the collection in 
> SelectManyHelper.getConvertedValue bypasses the PersistentSet getter that 
> would normally issue the lazy load request.
> Defining the collectionType (e.g. java.util.ArrayList) bypasses this issue.
> Ideally this method would detect Hibernate proxy collections and handle them 
> appropriately. However, I realize that may cause a dependency so perhaps it 
> would be enough to document this option and situation in the component 
> reference.
> The stack trace for the exception is below:
> {code}
> [org.richfaces.log.Context] (http-localhost-127.0.0.1-8080-1) failed to 
> lazily initialize a collection, no session or session was closed: 
> org.hibernate.LazyInitializationException: failed to lazily initialize a 
> collection, no session or session was closed
>       at 
> org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:393)
>  [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
>       at 
> org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:385)
>  [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
>       at 
> org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:378)
>  [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
>       at 
> org.hibernate.collection.internal.AbstractPersistentCollection.write(AbstractPersistentCollection.java:208)
>  [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
>       at 
> org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:291) 
> [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
>       at 
> org.richfaces.renderkit.SelectManyHelper.getConvertedValue(SelectManyHelper.java:350)
>  [richfaces-components-ui-4.2.3.Final.jar:4.2.3.Final]
>       at 
> org.richfaces.renderkit.SelectManyRendererBase.getConvertedValue(SelectManyRendererBase.java:108)
>  [richfaces-components-ui-4.2.3.Final.jar:4.2.3.Final]
>       at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIInput.validate(UIInput.java:960) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIInput.executeValidate(UIInput.java:1233) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIInput.processValidators(UIInput.java:698) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
>  [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIForm.processValidators(UIForm.java:253) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at 
> org.richfaces.context.PartialViewExecuteVisitCallback.visit(PartialViewExecuteVisitCallback.java:55)
>  [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
>       at 
> org.richfaces.context.BaseExtendedVisitContext.invokeVisitCallback(BaseExtendedVisitContext.java:321)
>  [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
>       at javax.faces.component.UIComponent.visitTree(UIComponent.java:1612) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIForm.visitTree(UIForm.java:371) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at 
> org.richfaces.context.ExtendedPartialViewContextImpl.executeComponents(ExtendedPartialViewContextImpl.java:237)
>  [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
>       at 
> org.richfaces.context.ExtendedPartialViewContextImpl.processPartialExecutePhase(ExtendedPartialViewContextImpl.java:217)
>  [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
>       at 
> org.richfaces.context.ExtendedPartialViewContextImpl.processPartial(ExtendedPartialViewContextImpl.java:196)
>  [richfaces-core-impl-4.2.3.Final.jar:4.2.3.Final]
>       at 
> javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1170) 
> [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
>       at 
> com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
>  [jsf-impl-2.1.7-jbossorg-2.jar:]
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to