Hello,
Some time ago I try with version 2.x but next I was reading about JDO and EJB and now I back to hibernate and start with version 3.x.
XML mapping is great idea. Just super ;]
I have got some data backuped in xml, I thought it is great chance to play with xml mapping.
I have 3 class:
A { int id; String name }
Parent extends A { Set children ... // instances of Child }
Child extends A { }
and I have got xml like this:
Code:
<root>
<Parent id="100" name="parent">
<Child id="111" name="child"/>
</Parent>
</root>
And when I want save Parent object
Code:
Element root = d.getRootElement();
Node n = root.node(0);
dom4jSession.save("test.Parent",n);
a catch exception like this:
Code:
instance not of expected entity type: test.A
org.hibernate.HibernateException: instance not of expected entity type: test.A
at org.hibernate.persister.entity.BasicEntityPersister.getSubclassEntityPersister(BasicEntityPersister.java:2967)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1083)
at org.hibernate.id.Assigned.generate(Assigned.java:31)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:85)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:477)
at test.ATest.testHello(ATest.java:63)
My hbm file looks like this:
Code:
<hibernate-mapping package="test">
<class name="A" table="aa">
<id name="id" node="@id"/>
<discriminator column="class_type" type="string" length="10"/>
<property name="name" column="name" not-null="true" type="string" length="63" node="@name"/>
<subclass name="Parent" discriminator-value="parent" node="Parent">
<set name="children" embed-xml="true" node=".">
<key column="parent_id"/>
<one-to-many class="Child"/>
</set>
</subclass>
<subclass name="Child" discriminator-value="child" node="Child">
</subclass>
</class>
</hibernate-mapping>
uff :)
Everything looks fine. I can retrieve dom4j's node from database and it looks fine.
Code:
<Parent id="10" name="parent"><Child id="11" name="child"/></Parent>
Greetings
Flower