【发布时间】:2014-05-17 07:01:39
【问题描述】:
hql = "select rm.* from remoteunit rm inner join mo m on rm.MOID = m.ID left join
orgmomapping o on rm.MOID = o.MOID join organization org on org.ID = o.ORGANIZATIONID
where m.DOMAINID = :id";
query = session.createSQLQuery(hql);
这个查询在使用查询时返回一个对象列表
remoteUnitList = (ArrayList<RemoteUnitDetails>)query.list();
但是当我尝试获取一个对象时
RemoteUnitDetails details = (RemoteUnitDetails)remoteUnitsList.get(i);
我得到类转换异常。
我正在使用 MySQL 数据库。在休眠中使用条件时,我无法匹配 orgmomapping 和 remoteunit 表。因为
orgmomapping -> id, organizationId, remoteUnitId
remoteunit -> id
此远程单元 ID 可能存在也可能不存在于组织映射中。
请提出解决方案
谢谢
更新
RemoteUnitDetails.hbm.xml
<hibernate-mapping>
<class name="---.RemoteUnitDetails" table="remoteunit"
lazy="false">
<id name="id" column="ID">
<generator class="increment" />
</id>
<many-to-one name="remoteUnit" column="MOID"
class="---.RemoteUnit" not-null="true"></many-to-one>
<property name="address" column="ADDRESS" />
<property name="postalCode" column="POSTALCODE" />
<property name="city" column="CITY" />
<property name="region" column="REGION" />
<property name="visible" column="VISIBLE" />
<property name="lowPowerMode" column="LOWPOWERMODE" />
<property name="wakeUpInterval" column="WAKEUPINTERVAL" />
<property name="awakeInterval" column="AWAKEINTERVAL" />
<property name="resetAtNextInterval" column="RESETATNEXTINTERVAL" />
<property name="logInterval" column="LOGINTERVAL" />
<property name="sendIntervalLogData" column="SENDINTERVALLOGDATA" />
<property name="sendIntervalAttr1" column="SENDINTERVALATTR1" />
<property name="sendIntervalAttr2" column="SENDINTERVALATTR2" />
</class>
</hibernate-mapping>
RemoteUnit.hbm.xml
<hibernate-mapping>
<class name="---.RemoteUnit" table="mo" lazy="false">
<id name="id" column="ID">
<generator class="increment" />
</id>
<property name="name" />
<property name="aliasName" column="SCREENNAME" />
<property name="description" column="DESCRIPTION" />
<property name="isActive" column="ISLIVE" />
<many-to-one name="domain" column="DOMAINID"
class="---.Domain" not-null="true" />
<!-- Foreign key -->
<many-to-one name="moType" column="MOTYPEID"
class="---.MoType" not-null="true" />
</class>
</hibernate-mapping>
OrgMoMapping.hbm.xml
<hibernate-mapping>
<class name="---.OrgRemoteUnitMapping" table="orgmomapping"
lazy="false">
<id name="id" column="ID">
<generator class="identity" />
</id>
<many-to-one name="organization" column="ORGANIZATIONID"
class="---.Organization" not-null="true"></many-to-one>
<many-to-one name="remoteUnit" column="MOID"
class="---.RemoteUnit" not-null="true"></many-to-one>
</class>
</hibernate-mapping>
【问题讨论】: