I'm,Use MyEclipse/headache
//configure Person
<set name="epzongs" inverse="true" table="Epzong">
<key>
<column name="pid" not-null="true" />
</key>
<!-- -->
<one-to-many class="com.hibernate.db.Epzong" />
</set>
//Person by Set
private Set epzongs = new HashSet(0);
//Person
private Long createPerson(String fname,String lname,Integer age){
Session s=HibernateSessionFactory.getSession();
Transaction t=s.beginTransaction();
Personperson=new Person();
person.setAge(age);
person.setFirstname(fname);
person.setLastname(lname);
s.save(person);
t.commit();
s.close();
return person.getId();
}
//preparative action
private void addPersonToEvent(Long personId, Long eventId) {
Session s=HibernateSessionFactory.getSession();
Transaction t=s.beginTransaction();
Person aPerson = (Perone) s
.createQuery("select p from Perone p left join fetch p.epzongs where p.id = :pid").setParameter("pid", personId).uniqueResult();
Event anEvent = (Event) s.load(Event.class, eventId);
t.commit();
aPerson.getEpzongs().add(anEvent);
Session session2 = HibernateSessionFactory.getSession();
Transaction t1=s.beginTransaction();
session2.beginTransaction();
session2.update(aPerson);
t1.commit();
session2.close();
//action
Long eventId = mh.createEvent("My Event", new Date());
Long personId = mh.createPerson("111", "Bar",21);
mh.addPersonToEvent(personId, eventId);
System.out.println("Added person " + personId + " to event " + eventId);
error:
Exception in thread "main" java.lang.ClassCastException: com.hibernate.db.Event$$EnhancerByCGLIB$$6abb194d
at org.hibernate.type.EntityType.toLoggableString(EntityType.java:154)
at org.hibernate.type.CollectionType.toLoggableString(CollectionType.java:146)
at org.hibernate.pretty.Printer.toString(Printer.java:53)
at org.hibernate.pretty.Printer.toString(Printer.java:90)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:97)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.hibernate.bs.ManagerHibernate.addPersonToEvent(ManagerHibernate.java:84)
at com.hibernate.bs.ManagerHibernate.main(ManagerHibernate.java:97)
..//epzong table mapping
<hibernate-mapping>
<class name="com.hibernate.db.Epzong" table="epzong" schema="dbo" catalog="hibernateDB">
<composite-id name="id" class="com.hibernate.db.EpzongId">
<key-property name="eid" type="java.lang.Long">
<column name="eid" />
</key-property>
<key-property name="pid" type="java.lang.Long">
<column name="pid" />
</key-property>
</composite-id>
<many-to-one name="perone" class="com.hibernate.db.Perone" update="false" insert="false" fetch="select">
<column name="pid" not-null="true" />
</many-to-one>
<many-to-one name="event" class="com.hibernate.db.Event" update="false" insert="false" fetch="select">
<column name="eid" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
[/u]
|