`
soltex
  • 浏览: 10080 次
  • 来自: ...
社区版块
存档分类
最新评论

Hibenate 1对1关系查询迷惑,请大侠们指点

阅读更多
小弟在项目中使用Hibernate的一对一关系,见.hbm文件如下:
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

比较迷惑,请兄弟姐妹们指点,谢谢 ……
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics