No to je minimalne divny ... poslete cele mapovani. Ja pouzivam podobnou vec a bez problemu (pravda jenom v Hibernate
2.1.8).
Goo GGooo wrote:
Ahoj vsichni,
resim tady problem s hibernate 3.0. Mam class Record a jeji dva
potomky MessageRecord a Exception Record. Mapovani je zhruba takhle:
<class name="Record">
<id name="id"><generator class="native" /></id>
<property name="message" />
</class>
<joined-subclass extends="Record" name="MessageRecord">
<key column="id" />
<property name="title" />
</joined-subclass>
<joined-subclass extends="Record" name="ExceptionRecord">
<key column="id" />
<property name="severity" />
</joined-subclass>
Mam ulozeno par objektu, ktere budto muzu vybrat podle ID, to funguje,
nebo pres HQL a tam je kamen urazu. Kdyz je HQL query proste "from
Record" tak mi to sice vrati vsechny objekty, ale nedokazu zjistit
jestli se jedna o MessageRecord nebo ExceptionRecord:
Iterator i = session.createQuery("from Record").iterate();
while (i.hasNext()) {
Record r = (Record) i.next();
System.out.print(r.getId() + ": " + r.getClass() + ": "+
r.getMessage()); // *1
if (r instanceof MessageRecord)
System.out.print(" - MessageRecord: " +
((MessageRecord)r).getTitle());
if (r instanceof ExceptionRecord)
System.out.print(" - ExceptionRecord: " +
((ExceptionRecord)r).getSeverity());
System.out.println();
}
Vypis tohoto cyklu:
1: class pokus.Record$$EnhancerByCGLIB$$f50d8bc6: Tohle je nejaka
normalni zprava...
2: class pokus.Record$$EnhancerByCGLIB$$f50d8bc6: Tohle je vyjimecna zprava
Jelikoz oba vracene objekty jsou
pokus.Record$$EnhancerByCGLIB$$f50d8bc6 tak na ne nefunguje
"instanceof" a ja nevim ktery je ktery.
Kdyz do query dam "from MessageRecord" tak mi to poctive vrati objekty
pokus.MessageRecord$$enhancer...$$ a "instanceof" funguje, jenze ja
bych chtel vybrat vsechny objekty.
Ma nekdo tip jak na to?
Diky!
Gooo
--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic