Problem:
I have a class Employee which contains a Map of Company objects. Employee and Company do not share a common super class. However, I get an error in the mapping. When I don't specify a mapping for Company in hibernate.cfg.xml, I get an "Association references unmapped class "error (see stack trace) , when I do specify a mapping for Company in hibernate.cfg.xml, I get a "duplicate import" error! Can someone point me on what I do wrong? Thanks in advance.
public class Employee implements Serializable {
private Map companies;
...
}
hibernate version: 2
database: mysql
mapping documents:
hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jcs</property>
<property name="hibernate.connection.username">yyy</property>
<property name="hibernate.connection.password">xxx</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<property name="connection.pool_size">20</property>
<property name="statement_cache.size">6</property>
<property name="show_sql">true</property>
<mapping resource="be/jcs/cv/model/Employee.hbm.xml"/>
<mapping resource="be/jcs/cv/model/Company.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Employee.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="be.jcs.cv.model.Employee" table="employee">
<id name="uid" type="int" unsaved-value="null">
<column name="uid" sql-type="int" not-null="true"/>
<generator class="increment"/>
</id>
<property name="name">
<column name="name" sql-type="char(25)" not-null="false"/>
</property>
<property name="firstName">
<column name="firstname" sql-type="char(25)" not-null="false"/>
</property>
<set name="skills" table="employee_skill">
<key column="employeeUid"/>
<element column="skillUid" type="string"/>
</set>
<map name="companies">
<key column="employeeUid"/>
<index column="collectionindex" type="string"/>
<one-to-many class="be.jcs.cv.model.Company"/>
</map>
</class>
</hibernate-mapping>
Company.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="be.jcs.cv.model.Company" table="company">
<id name="uid" type="char(32)" unsaved-value="0">
<column name="uid" sql-type="string" not-null="true"/>
<generator class="uuid.hex"/>
</id>
<property name="name">
<column name="name" sql-type="char(25)" not-null="false"/>
</property>
</class>
</hibernate-mapping>
stack trace:
2004-03-18 10:49:36 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
be.jcs.cv.persistency.PersistencyException: Exception occured with the Hibernate persistency mechanism
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:186)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:164)
at be.jcs.cv.action.PrepareEditorAction.execute(PrepareEditorAction.java:42)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.hibernate.MappingException: Association references unmapped class: be.jcs.cv.model.Company
at net.sf.hibernate.cfg.Binder.bindCollectionSecondPass(Binder.java:1148)
at net.sf.hibernate.cfg.Binder.bindMapSecondPass(Binder.java:1106)
at net.sf.hibernate.cfg.Binder$MapSecondPass.secondPass(Binder.java:1372)
at net.sf.hibernate.cfg.Binder$SecondPass.doSecondPass(Binder.java:1328)
at net.sf.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:600)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:743)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:181)
... 32 more
2004-03-18 11:14:38 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
be.jcs.cv.persistency.PersistencyException: Exception occured with the Hibernate persistency mechanism
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:186)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:164)
at be.jcs.cv.action.PrepareEditorAction.execute(PrepareEditorAction.java:42)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.hibernate.MappingException: Association references unmapped class: be.jcs.cv.model.Company
at net.sf.hibernate.cfg.Binder.bindCollectionSecondPass(Binder.java:1148)
at net.sf.hibernate.cfg.Binder.bindMapSecondPass(Binder.java:1106)
at net.sf.hibernate.cfg.Binder$MapSecondPass.secondPass(Binder.java:1372)
at net.sf.hibernate.cfg.Binder$SecondPass.doSecondPass(Binder.java:1328)
at net.sf.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:600)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:743)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:181)
... 32 more
2004-03-18 11:14:45 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
be.jcs.cv.persistency.PersistencyException: Exception occured with the Hibernate persistency mechanism
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:186)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:164)
at be.jcs.cv.action.PrepareEditorAction.execute(PrepareEditorAction.java:42)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.hibernate.MappingException: Association references unmapped class: be.jcs.cv.model.Company
at net.sf.hibernate.cfg.Binder.bindCollectionSecondPass(Binder.java:1148)
at net.sf.hibernate.cfg.Binder.bindMapSecondPass(Binder.java:1106)
at net.sf.hibernate.cfg.Binder$MapSecondPass.secondPass(Binder.java:1372)
at net.sf.hibernate.cfg.Binder$SecondPass.doSecondPass(Binder.java:1328)
at net.sf.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:600)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:743)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:181)
... 32 more
2004-03-18 11:17:36 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
be.jcs.cv.persistency.PersistencyException: Exception occured with the Hibernate persistency mechanism
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:186)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:164)
at be.jcs.cv.action.PrepareEditorAction.execute(PrepareEditorAction.java:42)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
at java.lang.Thread.run(Thread.java:534)
Caused by: net.sf.hibernate.MappingException: Error reading resource: be/jcs/cv/model/Company.hbm.xml
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:318)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:976)
at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:928)
at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:856)
at be.jcs.cv.persistency.PersistencyManager.getConfiguration(PersistencyManager.java:68)
at be.jcs.cv.persistency.PersistencyManager.find(PersistencyManager.java:180)
... 32 more
Caused by: net.sf.hibernate.MappingException: duplicate import: Company
at net.sf.hibernate.cfg.Mappings.addImport(Mappings.java:85)
at net.sf.hibernate.cfg.Binder.bindClass(Binder.java:126)
at net.sf.hibernate.cfg.Binder.bindRootClass(Binder.java:221)
at net.sf.hibernate.cfg.Binder.bindRoot(Binder.java:1229)
at net.sf.hibernate.cfg.Configuration.add(Configuration.java:249)
at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:285)
at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:315)
... 37 more
[/b]
|