-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 20 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Cannot access loading collection
PostPosted: Sat Feb 14, 2004 8:27 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
I switched from 2.1final to 2.1.2 and got the following exception :

14-02-2004 13:17:15:437 ERROR net.sf.hibernate.AssertionFailure:22 - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
net.sf.hibernate.AssertionFailure: cannot access loading collection
at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:196)
at net.sf.hibernate.collection.PersistentCollection.read(PersistentCollection.java:71)
at net.sf.hibernate.collection.Set.contains(Set.java:122)
at com.uniclick.afbah.modele.dossier.Dossier.addVictime(Dossier.java:273)
at com.uniclick.afbah.modele.dossier.victime.Victime.setDossier(Victime.java:128)
at com.uniclick.afbah.modele.dossier.victime.Victime$$BulkBeanByCGLIB$$f45730ac.setPropertyValues(<generated>)
at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:208)
at net.sf.hibernate.impl.SessionImpl.initializeEntity(SessionImpl.java:2174)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:240)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.loadCollection(Loader.java:910)
at net.sf.hibernate.loader.Loader.loadCollection(Loader.java:885)
at net.sf.hibernate.loader.OneToManyLoader.initialize(OneToManyLoader.java:80)
at net.sf.hibernate.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:284)
at net.sf.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:3226)
at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:200)
at net.sf.hibernate.collection.PersistentCollection.read(PersistentCollection.java:71)
at net.sf.hibernate.collection.Set.isEmpty(Set.java:114)
at com.uniclick.afbah.modele.dossier.Dossier.getListeAnomalies(Dossier.java:453)
at com.uniclick.afbah.modele.dossier.Dossier.isIncomplet(Dossier.java:443)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.commons.beanutils.PropertyUtils.getSimpleProperty(PropertyUtils.java:1185)
at org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:200)
at org.displaytag.model.Column.getValue(Column.java:95)
at org.displaytag.model.Column.createChoppedAndLinkedValue(Column.java:146)
at org.displaytag.model.Column.getOpenTag(Column.java:122)
at org.displaytag.tags.TableTag.getTableBody(TableTag.java:1400)
at org.displaytag.tags.TableTag.getHTMLData(TableTag.java:1149)
at org.displaytag.tags.TableTag.doEndTag(TableTag.java:872)
at freemarker.ext.jsp.TagTransformModel$TagWriter.endEvaluation(TagTransformModel.java:313)
at freemarker.ext.jsp.TagTransformModel$TagWriter.afterBody(TagTransformModel.java:289)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:116)
at freemarker.core.Environment.visit(Environment.java:171)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:171)
at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
at freemarker.core.Environment.visit(Environment.java:171)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:171)
at freemarker.core.Environment.process(Environment.java:156)
at freemarker.template.Template.process(Template.java:219)
at freemarker.ext.servlet.FreemarkerServlet.process(FreemarkerServlet.java:423)
at freemarker.ext.servlet.FreemarkerServlet.doPost(FreemarkerServlet.java:370)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:64)
at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:53)
at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:268)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:37)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:37)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.uniclick.xwork.interceptors.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:74)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:37)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.uniclick.xwork.interceptors.ExceptionInterceptor.intercept(ExceptionInterceptor.java:59)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.uniclick.xwork.interceptors.AuthentificationInterceptor.intercept(AuthentificationInterceptor.java:56)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:182)
at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:162)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at com.uniclick.hibernate.HibernateFilter.doFilter(HibernateFilter.java:62)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)

Here is the mapping :

<set
name="victimes"
lazy="true"
inverse="true"
cascade="all"
sort="unsorted"
>

<key
column="dossier_id"
/>

<one-to-many
class="com.uniclick.afbah.modele.dossier.victime.Victime"
/>
</set>

And I've a standard implementation of hashCode and equals on the Victime object :

public boolean equals(Object other)
{
if ( !(other instanceof Victime) )
return false;

Victime castOther = (Victime) other;

return new EqualsBuilder().append(this.getId(),castOther.getId()).isEquals();
}

public int hashCode()
{
return new HashCodeBuilder().append(this.getId()).toHashCode();
}



I cant undertand this problem ....
Any help appreciated.
Thank you a lot.


Top
 Profile  
 
 Post subject:
PostPosted: Sat Feb 14, 2004 9:19 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
When I just change the hibernate2.1.2.jar for the hibernate2.1.1.jar, it works, so I believe there is a problem with the 2.1.2 release ...


Top
 Profile  
 
 Post subject:
PostPosted: Sat Feb 14, 2004 10:06 pm 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
Am I the only one to get this problem ????????


Top
 Profile  
 
 Post subject:
PostPosted: Sat Feb 14, 2004 10:12 pm 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
Look at this:

Quote:
at net.sf.hibernate.collection.Set.contains(Set.java:122)
at com.uniclick.afbah.modele.dossier.Dossier.addVictime(Dossier.java:273)
at com.uniclick.afbah.modele.dossier.victime.Victime.setDossier(Victime.java:128)


It should be kinda clear why this sequence of calls is dangerous. Hibernate is trying to construct a graph of objects and then you call a method of a collection that is still in an inconsistent state.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Feb 15, 2004 1:36 pm 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
Very interesting ... So for you, the following code is anti-pattern for Hibernate ?????

VICTIME object :
public void setDossier(Dossier dossier)
{
if (this.dossier != dossier)
{
if (this.dossier != null)
this.dossier.removeVictime(this);
this.dossier = dossier;
if (dossier != null)
dossier.addVictime(this);
}
}


DOSSIER object :
public void addVictime(Victime victime)
{
if (!this.victimes.contains(victime))
{
this.victimes.add(victime);
victime.setDossier(this);
}
}


Top
 Profile  
 
 Post subject:
PostPosted: Sun Feb 15, 2004 1:40 pm 
Hibernate Team
Hibernate Team

Joined: Tue Sep 09, 2003 2:10 pm
Posts: 3246
Location: Passau, Germany
Yes, interfering with a currently lazy loading collection in a set Method is definately an antipattern.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 16, 2004 6:42 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
Does it make sense to add an entry in the faq for this kind of problem ?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 16, 2004 9:29 am 
Hibernate Team
Hibernate Team

Joined: Tue Sep 09, 2003 2:10 pm
Posts: 3246
Location: Passau, Germany
If it ever gets a FAQ we will add an entry, not as long as only 2 people had that problem.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 16, 2004 10:02 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
As far I am concerned, I think it's an important concept of design to point out, because my previous code was a classic collection management pattern (Poseidon, an UML tool, generates this kind of code) ...
My 2 cents.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 16, 2004 10:51 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
There is a FAQ in the wiki area. Public updates are available and encouraged.

_________________
Emmanuel


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 16, 2004 10:57 am 
Hibernate Team
Hibernate Team

Joined: Tue Sep 09, 2003 2:10 pm
Posts: 3246
Location: Passau, Germany
dharma, sure you can add it to the FAQ from the Forum if you want, sorry for being so grumpy, just ignore me on some occasion :)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 17, 2004 7:15 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
I know it's not the right place, but I cannot post a new entry in the faqs from the forum.


Your account enables:

participation on the Forum
comments on the Wiki


Is there a min of posts to reach ????


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 17, 2004 7:17 am 
Hibernate Team
Hibernate Team

Joined: Tue Sep 09, 2003 2:10 pm
Posts: 3246
Location: Passau, Germany
This should work. Just click on the "Edit this Page" link in the page header.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 17, 2004 7:26 am 
Hibernate Team
Hibernate Team

Joined: Mon Aug 25, 2003 9:11 pm
Posts: 4592
Location: Switzerland
Some pages are of course locked down for some access groups and users, but all in the "Community Area" section of the website should be free to edit.

_________________
JAVA PERSISTENCE WITH HIBERNATE
http://jpwh.org
Get the book, training, and consulting for your Hibernate team.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 17, 2004 10:19 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
We're talking about this FAQ http://www.hibernate.org/Documentation/FAQsFromTheForum

_________________
Emmanuel


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 20 posts ]  Go to page 1, 2  Next

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.