小弟在项目中使用Hibernate的一对一关系,见.hbm文件如下:
class AcirsUser
class EaInfo:
查询方式2种:
如果使用
这种方式查询,查询查来的eaInfo项就不为空,而且数据正确
如果使用new map()方式:
如果使用new map方式查询出来的eaInfo就为null
比较迷惑,请兄弟姐妹们指点,谢谢 ……
class AcirsUser
<hibernate-mapping>
<class name="uk.co.quidos.acirs.model.entity.AcirsUser" table="acirs_user" catalog="acirs_v1" lazy="false">
<id name="userId" type="java.lang.String">
<column name="user_id" length="32" />
<generator class="uuid.hex" />
</id>
<property name="userName" type="java.lang.String">
<column name="user_name" length="32" not-null="true" />
</property>
<property name="userPwd" type="java.lang.String">
<column name="user_pwd" length="32" />
</property>
<property name="status" type="java.lang.Integer">
<column name="status" not-null="true" />
</property>
<one-to-one name="adminInfo" class="uk.co.quidos.acirs.model.entity.AdminInfo" fetch="join"/>
<one-to-one name="eaInfo" class="uk.co.quidos.acirs.model.entity.EaInfo" fetch="join"/>
<set name="userRoleRels" inverse="true">
<key>
<column name="user_id" length="32" not-null="true" />
</key>
<one-to-many class="uk.co.quidos.acirs.model.entity.UserRoleRel" />
</set>
<set name="preForms" inverse="true">
<key>
<column name="user_id" length="32" unique="true" />
</key>
<one-to-many class="uk.co.quidos.acirs.model.entity.PreForm" />
</set>
</class>
</hibernate-mapping>
class EaInfo:
<hibernate-mapping>
<class name="uk.co.quidos.acirs.model.entity.EaInfo" table="ea_info" catalog="acirs_v1" lazy="false">
<id name="userId" type="java.lang.String">
<column name="user_id" length="32" />
<generator class="foreign">
<param name="property">acirsUser</param>
</generator>
</id>
<one-to-one name="acirsUser" class="uk.co.quidos.acirs.model.entity.AcirsUser" constrained="true"/>
<many-to-one name="city" class="uk.co.quidos.acirs.model.entity.City" fetch="select">
<column name="city_id" length="32" not-null="true" unique="true" />
</many-to-one>
<many-to-one name="qualifications" class="uk.co.quidos.acirs.model.entity.Qualifications" fetch="select">
<column name="qualification_id" length="32" not-null="true" unique="true" />
</many-to-one>
<many-to-one name="title" class="uk.co.quidos.acirs.model.entity.Title" fetch="select">
<column name="title_id" length="32" not-null="true" unique="true" />
</many-to-one>
<property name="firstName" type="java.lang.String">
<column name="first_name" length="64" />
</property>
<property name="surName" type="java.lang.String">
<column name="sur_name" length="64" />
</property>
<property name="accreditationScheme" type="java.lang.String">
<column name="accreditation_scheme" length="128" />
</property>
<property name="tel" type="java.lang.String">
<column name="tel" length="128" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="128" />
</property>
<property name="companyName" type="java.lang.String">
<column name="company_name" length="128" />
</property>
<property name="address1" type="java.lang.String">
<column name="address1" length="128" />
</property>
<property name="address2" type="java.lang.String">
<column name="address2" length="128" />
</property>
<property name="address3" type="java.lang.String">
<column name="address3" length="128" />
</property>
<property name="postCode" type="java.lang.String">
<column name="post_code" length="64" />
</property>
<property name="relatedPartyDisclosure" type="java.lang.String">
<column name="related_party_disclosure" length="10" />
</property>
</class>
</hibernate-mapping>
查询方式2种:
如果使用
select
acirsUser,eaInfo
from AcirsUser as acirsUser
inner join
acirsUser.eaInfo as eaInfo
这种方式查询,查询查来的eaInfo项就不为空,而且数据正确
如果使用new map()方式:
select
new map(acirsUser,eaInfo)
from AcirsUser as acirsUser
inner join
acirsUser.eaInfo as eaInfo
如果使用new map方式查询出来的eaInfo就为null
比较迷惑,请兄弟姐妹们指点,谢谢 ……