我的本来意思是想执行一个HIBERNATE联合查询,我认定下面这个联合查询为多对一,有人说帮我指定下为一对一。 
但是我想问大家1对1的HQL查询该怎么写呢???如果可以希望能留下QQ帮忙下,我QQ95685263 
这问题搞了我一下午了,我的HQL语句是String hql = "FROM RoleVO as a left join a.userRoleVO as b where b.userID=?" 可是程序老认不到这个a.userRoleVO  于是我在VO配置文件中配置: 
RoleVO.hbm.xml 
<id> 
<many-to-one name="UserRoleVO" class="com.shili2.vo.UserRoleVO" 
  fetch="select"> 
  <column name="roleID" /> 
  </many-to-one> 这个RoleID是这个RoleVO的主健, 
在UserRoleVO中配置成这样, 
<property name="roleID" type="java.lang.String" update="false" insert="false"> 
  <column name="roleID" length="50" /> 
  </property> 
<set name="role" inverse="true" table="role"> 
  <key> 
  <column name="roleID" /> 
  </key> 
  <one-to-many class="com.shili2.vo.RoleVO" /> 
  </set> 它老是报org.hibernate.MappingException: Repeated column in mapping for entity: com.shili2.vo.RoleVO column: roleID (should be mapped with insert="false" update="false")这个错。 
我在UserRoleVO中已经配置了update="false" insert="false"为空了,它还是报这个错,难道我得到ROLEVO中把ROLEID这个主健也设为不能插入???????? 
表 role  属性roleID(主键) roleName roleCode   表userRole  userROleID(主键)   roleID(外键)  userID 

解决方案 »

  1.   

    <many-to-one name="UserRoleVO"
    这里的U是不是应该小写
      

  2.   

    还有把 update="false" insert="false"写在many-to-one的标签里
      

  3.   

     建议你去用annotation吧 用了annotation你就不会再想xml了
      

  4.   

    user和Role是多对多关系,你的UserRole是关联表,应该配置成<many-to-many><set batch-size="20" cascade="save-update" lazy="true" name="userRoles"
       sort="natural" table="userRoles">
       <key>
        <column name="iUserId" not-null="true"/>
       </key>
       <many-to-many class="Role" column="iRoleId" unique="false"/>
      </set>