Hey!
I`ve got the error, if I try to save a JAVA Object into my EmbeddedDerby database.
For further information, i`ll try to make an employee (className = Mitarbeiter) persistent who have one or more qualification (className = Typ [abstract] -> Uebersetzer [extended]).
Mitarbeiter.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 27.10.2011 11:46:11 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="core.Mitarbeiter" table="MITARBEITER">
<id name="ID" type="int" access="field">
<column name="ID" />
<generator class="assigned" />
</id>
<property name="vorname" type="java.lang.String">
<column name="VORNAME" />
</property>
<property name="nachname" type="java.lang.String" access="field">
<column name="NACHNAME" />
</property>
<property name="wohnort" type="java.lang.String" access="field">
<column name="WOHNORT" />
</property>
<property name="freitext" type="java.lang.String">
<column name="FREITEXT" />
</property>
<set name="typen" table="Mitarbeiter_Typen" cascade="all">
<key column="MitarbeiterID" />
<many-to-many column="TypID" class="core.typen.Typ" />
</set>
</class>
</hibernate-mapping>
Typ.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 27.10.2011 11:46:11 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="core.typen.Typ" table="TYP" abstract="true">
<id name="ID" type="int" access="field">
<column name="ID" />
<generator class="assigned" />
</id>
<set name="mitarbeiter" table="Mitarbeiter_Typen" cascade="all">
<key column="TypID" />
<many-to-many column="MitarbeiterID" class="core.Mitarbeiter" />
</set>
</class>
</hibernate-mapping>
Uebersetzer.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 27.10.2011 11:46:11 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<union-subclass extends="core.typen.Typ" entity-name="core.typen.Uebersetzer" table="Uebersetzer">
<set name="Sprache" table="Typen_Sprachen" cascade="all">
<key column="TypID" />
<many-to-many column="MitarbeiterID" class="core.Mitarbeiter" />
</set>
</union-subclass>
</hibernate-mapping>
hibernate.cfg.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
<property name="hibernate.connection.url">jdbc:derby:/bohmann;create=true</property>
<property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping class="core.Mitarbeiter" resource="core/Mitarbeiter.hbm.xml"/>
<mapping class="core.Mitarbeiter" resource="core/Sprache.hbm.xml"/>
<mapping class="core.typen.Typ" resource="core/typen/Typ.hbm.xml"/>
<mapping class="core.typen.Uebersetzer" resource="core/typen/Uebersetzer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
JAVA trace, after saving:
java.lang.ClassCastException: core.typen.Uebersetzer cannot be cast to java.util.Map
at org.hibernate.property.MapAccessor$MapGetter.get(MapAccessor.java:116)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:340)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4241)
at org.hibernate.id.Assigned.generate(Assigned.java:49)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:119)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:202)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:89)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:646)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:639)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:635)
at tools.HibernateUtil.save(HibernateUtil.java:32)
at unit.TestDB.testInsert(TestDB.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:274)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:242)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:58)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:240)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:48)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:233)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:303)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
thx for help
Dennis