Hallo,
die Klasse VoAbteilung erbt von VoRevisionSafeObject.
Wenn ich nun mit Criteria Query
from VoAbteilung auf ein geerbtes Attribut "validuntil" von VoRevisionSafeObject einschränken will, kommt:
org.hibernate.QueryException: could not resolve property: validuntil of: de.test.pps.VoAbteilung
VoAbteilung ist als union-subclass gemappt.
Wenn ich from VoRevisionSafeObject abfrage, funzt es.
Wie kann ich einen Query auf die Subklasse machen und auf ein Elternattribut einschränken?
schöne Grüße
Hibernate version:
3.2.5
Mapping documents:
<hibernate-mapping>
<union-subclass name="de.test.pps.VoRevisionSafeBusinessObject" extends="de.test.pps.VoBusinessObject">
<property name="validFrom" column="validfrom" type="timestamp" not-null="true" />
<property name="validUntil" column="validuntil" type="timestamp" not-null="false" />
</union-subclass>
</hibernate-mapping>
<union-subclass name="de.test.pps.VoAbteilung" extends="de.test.pps.VoRevisionSafeBusinessObject" table="abteilung">
<property name="mandant" type="integer" not-null="false" column="mandant" length="4" unique-key="ABTEILUNG_UNIQUE_BUSINESS_KEY"/>
<property name="abteilungsNummer" type="integer" not-null="true" column="abt" length="4" unique-key="ABTEILUNG_UNIQUE_BUSINESS_KEY"/>
<property name="name" type="string" not-null="true" column="ABTEILUNGSNAME" length="20" />
</union-subclass>
Code between sessionFactory.openSession() and session.close():
Criteria crit = session.createCriteria(searchFilter.getClassToFilter());
try {
// if Class to filter is revision save - give back only current data
Class.forName(searchFilter.getClassToFilter().getCanonicalName()).asSubclass(
VoRevisionSafeBusinessObject.class);
if(historicData == false){
logger.debug("Object is revision safe - filtering historic data out");
searchFilter.addFilterCondition(Restrictions.isNull("validuntil"), "validuntil");
}
} catch (ClassNotFoundException e) {
logger.error(e);
return null;
}
List l = crit.list();
session.close();
return l;
Full stack trace of any exception that occurs:
org.hibernate.QueryException: could not resolve property: validuntil of: de.leuka.pps.VoAbteilung
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
Name and version of the database you are using:
MySql
|