0

I have an @Entity with :

@Entity
public class Issue implements Serializable
{
  @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
 protected long id; 

 @ManyToOne
 private IssueScope scope;

  //getter/setter
}

I use the custom IssueScopeConverter to directly use the IssueScope with f:selectItems. The converter simply

  • returns the id for the method getAsString
  • return a newly created object IssueScope (with id set) for getAsObject

This does not raise any problems (and is used many times before with @ManyToOne) with p:selectOneMenu and similar components with code like this:

<h:form id="fScope">
  <p:selectOneButton rendered="true" value="#{issueBean.issue.scope}"
                     converter="IssueScopeConverter">  
    <f:selectItems value="#{issueBean.issueScopes}" var="s"
                   itemLabel="#{s.name}" itemValue="#{s}"/>
  </p:selectOneButton>
  <p:commandButton value="Save" actionListener="#{issueBean.save()}"/>
</h:form>

Now let's describe my problem: In fact I don't need a @ManyToOne, I need a @ManyToMany relationship from Issue to IssueScope:

@ManyToMany(fetch=FetchType.EAGER)
private List<IssueScope> scopes;

and the XHTML will change to this:

<h:form id="fScopes">
  <p:selectManyCheckbox value="#{issueBean.issue.scopes}"
                        converter="ErpIssueScopeConverter">  
    <f:selectItems value="#{issueBean.issueScopes}" var="s"
                   itemLabel="#{s.name}" itemValue="#{s}"/>
  </p:selectManyCheckbox>
  <p:commandButton value="Save" actionListener="#{issueBean.save()}"/>
</h:form>

If I newly create Issue and then push the Save button to persist the entity this is done without exception. Even selected IssueScopes are persisted. Then, if I want to update the entity, I get a 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 after pushing the button.

The method public void save() in my @Named @ViewScoped IssueBean is never entered.

The problem seems to be related to Lazy loading exception when using JSF Converter (refering to a collection), but I don't use Seam persistence or have special kind of TransactionInterceptor`.

Community
  • 1
  • 1
Thor
  • 6,607
  • 13
  • 62
  • 96

1 Answers1

1

Take a look at http://www.simtay.com/simple-crud-web-application-with-jsf-2-1-primefaces-3-5-maven-and-jpa/

See if it helps.

Best Regards