Beginner |
|
Joined: Thu Oct 09, 2003 11:41 am Posts: 39 Location: Paris, France
|
Hello,
I'm having a "No Persister for" exception in a many-to-many relationship when I create one of the entities.
Thanks for any insight.
Below are the details.
Hibernate version:
2.1.6
Mapping documents:
<class name="workflow.project.Project" table="workflow_project">
<id name="id" column="id" type="java.lang.Long" unsaved-value="null">
<generator class="increment"/>
</id>
<property name="title" column="title" type="string" />
<bag name="actors" table="workflow_user_project" cascade="all">
<key column="project_id" />
<many-to-many class="core.user.pojo.User" column="user_id" />
</bag>
</class>
<class name="core.user.pojo.User" table="core_user">
<id name="id" column="id" type="java.lang.Long" unsaved-value="null">
<generator class="increment"/>
</id>
<property name="firstName" column="user_firstname" type="string"/>
<property name="lastName" column="user_lastname" type="string"/>
<bag name="projects" table="workflow_user_project" inverse="true" cascade="all">
<key column="user_id"/>
<many-to-many class="workflow.project.Project" column="project_id"/>
</bag>
Code between sessionFactory.openSession() and session.close():
try
{
tx = session.beginTransaction();
Project project = new Project();
logger.info("Actors contents : ");
for (Iterator iterator = actors.iterator(); iterator.hasNext();)
{
logger.info(" -- " + iterator.next());
}
project.setActors(actors);
id = (Long)session.save(project);
logger.info("Id == " + id);
tx.commit();
}
catch(Exception e)
{
if (tx != null)
tx.rollback();
}
Full stack trace of any exception that occurs:
net.sf.hibernate.MappingException: No persister for: java.lang.String
at action.NewProjectAction.FinishAction(NewProjectAction.java:115)
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.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:252)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at com.livinglogic.struts.workflow.WorkflowRequestProcessor.processActionPerform(WorkflowRequestProcessor.java:158)
at com.livinglogic.struts.workflow.WorkflowRequestProcessorLogic.process(WorkflowRequestProcessorLogic.java:568)
at com.livinglogic.struts.workflow.WorkflowRequestProcessor.process(WorkflowRequestProcessor.java:179)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at ActionServlet.process(ActionServlet.java:24)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at framework.filters.JaasLoginFilter.doFilter(JaasLoginFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:277)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:80)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:122)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.hibernate.MappingException: No persister for: java.lang.String
at net.sf.hibernate.impl.SessionFactoryImpl.getPersister(SessionFactoryImpl.java:347)
at net.sf.hibernate.impl.SessionImpl.getClassPersister(SessionImpl.java:2690)
at net.sf.hibernate.impl.SessionImpl.getPersister(SessionImpl.java:2697)
at net.sf.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:1382)
at net.sf.hibernate.engine.Cascades$4.cascade(Cascades.java:114)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:436)
at net.sf.hibernate.engine.Cascades.cascadeCollection(Cascades.java:526)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:452)
at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:503)
at net.sf.hibernate.impl.SessionImpl.doSave(SessionImpl.java:952)
at net.sf.hibernate.impl.SessionImpl.doSave(SessionImpl.java:857)
at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:779)
at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:738)
at action.NewProjectAction.FinishAction(NewProjectAction.java:107)
... 52 more
Name and version of the database you are using:
MySQL 4.1.4
Debug level Hibernate log excerpt:
09-07-2004 18:24:21 INFO action.NewProjectAction - Placeholder for Step two
09-07-2004 18:24:21 DEBUG net.sf.hibernate.transaction.JTATransaction - Looking for UserTransaction under: UserTransaction
09-07-2004 18:24:21 DEBUG net.sf.hibernate.transaction.JTATransaction - Obtained UserTransaction
09-07-2004 18:24:21 DEBUG net.sf.hibernate.transaction.JTATransaction - beginning new transaction
09-07-2004 18:24:21 INFO action.NewProjectAction - Actors size == 1
09-07-2004 18:24:21 INFO workflow.project.Project - Actors contents :
09-07-2004 18:24:21 INFO workflow.project.Project - -- TestTitle
09-07-2004 18:24:21 DEBUG net.sf.hibernate.id.IncrementGenerator - fetching initial value: select max(id) from workflow_project
09-07-2004 18:24:21 DEBUG net.sf.hibernate.id.IncrementGenerator - first free id: 1
09-07-2004 18:24:21 DEBUG net.sf.hibernate.impl.SessionImpl - generated identifier: 1
09-07-2004 18:24:21 DEBUG net.sf.hibernate.impl.SessionImpl - saving [workflow.project.Project#1]
09-07-2004 18:24:21 DEBUG net.sf.hibernate.engine.Cascades - processing cascades for: workflow.project.Project
09-07-2004 18:24:21 DEBUG net.sf.hibernate.engine.Cascades - done processing cascades for: workflow.project.Project
09-07-2004 18:24:21 DEBUG net.sf.hibernate.impl.WrapVisitor - Wrapped collection in role: workflow.project.Project.actors
09-07-2004 18:24:21 DEBUG net.sf.hibernate.engine.Cascades - processing cascades for: workflow.project.Project
09-07-2004 18:24:21 DEBUG net.sf.hibernate.engine.Cascades - cascading to collection: workflow.project.Project.actors
09-07-2004 18:24:21 DEBUG net.sf.hibernate.engine.Cascades - cascading to saveOrUpdate()
09-07-2004 18:24:21 DEBUG net.sf.hibernate.transaction.JTATransaction - rollback
09-07-2004 18:24:21 DEBUG net.sf.hibernate.impl.SessionImpl - transaction completion
09-07-2004 18:24:21 WARN org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class framework.exception.BookingaspException
09-07-2004 18:24:21 ERROR org.jboss.web.localhost.Engine - StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
framework.exception.BookingaspException: net.sf.hibernate.MappingException: No persister for: java.lang.String
at action.NewProjectAction.FinishAction(NewProjectAction.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
(the exception trace continues as per above)
|
|