继承在hibernate中的实现,如何用criteria检索每个子类里相同的字段?
按道理讲子类里相同的字段应该放在父类里统一继承下来,但是已经是这样了。。我也没办法
问题:要检索出所有子类表当中RequestMessage 字段符合条件的记录,但是现在只能检索出from条件里join的第一张表的记录
# <hibernate-mapping default-lazy="false">
# <class name="com.fortinet.service.platform.domain.models.service.AbstractServiceMessageVO" table="MESSAGE">
# <id name="serviceMessageID" type="long" column="ServiceMessageID">
# <generator class="native"/>
# </id>
#
# <discriminator column="messageType"/>
#
# <property name="messageDateTime" column="MessageDateTime"/>
# <many-to-one name="transaction" column="TransactionID" class="com.fortinet.service.platform.domain.models.TransactionVO" not-null="true"/>
# <many-to-one name="service" column="ServiceID" class="com.fortinet.service.platform.domain.models.ServiceVO"/>
#
# <subclass name="com.fortinet.service.platform.domain.models.service.HTTP.HTTPMessageVO" discriminator-value="HTTP_MESSAGE">
# <join table="HTTP_MESSAGE">
# <key column="ServiceMessageID"/>
# <property name="requestMessage" column="RequestMessage" type="text" />
# <property name="responseMessage" column="ResponseMessage" type="text" />
# </join>
# </subclass>
# <subclass name="com.fortinet.service.platform.domain.models.service.SOAP.SOAPMessageVO" discriminator-value="SOAP_MESSAGE">
# <join table="SOAP_MESSAGE">
# <key column="ServiceMessageID"/>
# <property name="requestMessage" column="RequestMessage" type="text" />
# <property name="responseMessage" column="ResponseMessage" type="text" />
# </join>
# </subclass>
# </class>
生成的部分sql:
select ....
from from TB_SVC_MESSAGE this_ left outer join TB_SVC_SOAP_MESSAGE this_1_ on this_.ServiceMessageID=this_1_.ServiceMessageID
left outer join TB_SVC_HTTP_MESSAGE this_2_ on this_.ServiceMessageID=this_2_.ServiceMessageID
inner join ....
where this_1_.RequestMessage like ? order by this_.MessageDateTime desc
结果是只能选出SOAPMessageVO里符合条件的记录
我现在需要所有子类里requestmessage满足条件的记录,即where this_1_.RequestMessage like ? or this_2_.RequestMessage like ?