ClassCast zwischen ähnlichen Beans
Hibernate version: 3.2.0 CR4 mit Annotationen
DB: MySQL
Ich habe z.B. folgende Beans die ich gegenseitig casten möchte:
MethaBean extends Object
Person extends Metha Bean
Employee extends Person
User extends Person
Für die Vererbung verwende ich die Table per subclass strategie.
Eine Person kann mal ein Employee sein und auch mal ein User sein - je nach Context. Nachdem nun für jede Vererbungshirarchie eine eigene Tabelle in der DB angelegt wird müsste es doch möglich sein zwischen den Tabellen zu springen (zu Casten). Ich habe in der dokumentation dazu nichts finden können. Vielleicht kann mir jemand aus dem Forum helfen. Danke!
Folgender Code liefert immer einen Employee, weil ich dieses Object als Employee angelegt habe. Aber wie kann ich daraus einen User bzw. eine Person machen? (Das das zweite bean eine ClasCastException erzeugt ist natürlich klar)
Code:
Session session = SessionFactory.currentSession();
Long lID = new Long(1030);
Object bean1 = null;
Object bean2 = null;
Object bean3 = null;
try
{
bean1 = (Person)session.get(Person.class, lID);
bean3 = (Employee) session.get(Employee.class, lID);
bean2 = (User) session.get(User.class, lID);
}
catch (ClassCastException e)
{
e.printStackTrace();
}
System.out.println("1 Person :" + bean1);
System.out.println("2 User :" + bean2);
System.out.println("3 Employee :" + bean3);
Ausgabe:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
[2006.09.21][com.dooris.util.hibernate.SessionFactory][][DEBUG]: hibernate SessionFactory created by
[2006.09.21][com.dooris.util.hibernate.SessionFactory][][DEBUG]: hibernate session opened by
java.lang.ClassCastException: com.dooris.util.beans.Employee
at com.dooris.test.HibernateTest.main(HibernateTest.java:39)
1 Person :dooris.util.beans.Employee: Bauer Florian (1030)
2 User :null
3 Employee :dooris.util.beans.Employee: Bauer Florian (1030)
Gruß,
Florian