小弟的一个表有2个主键,一个是ID是DB2自动增列,一个是用户名,是业务中赋值,请问我如果配置HBM
<hibernate-mapping>
    <class name="com.icsc.ordersys.bo.User" table="USER" schema="DB2ADMIN">
        <composite-id name="id" class="com.icsc.ordersys.bo.UserId">
            <key-property name="userid" type="java.lang.Long">
                <column name="USERID" />
            </key-property>
            <key-property name="username" type="java.lang.String">
                <column name="USERNAME" length="30" />
            </key-property>
        </composite-id>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" length="30" not-null="true" />
        </property>
        <property name="realname" type="java.lang.String">
            <column name="REALNAME" length="10" not-null="true" />
        </property>
        <property name="personid" type="java.lang.String">
            <column name="PERSONID" length="30" not-null="true" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" length="30" not-null="true" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="EMAIL" length="30" not-null="true" />
        </property>
        <property name="mobile" type="java.lang.String">
            <column name="MOBILE" length="15" not-null="true" />
        </property>
        <property name="phone" type="java.lang.String">
            <column name="PHONE" length="15" not-null="true" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" length="5" not-null="true" />
        </property>
        <property name="brithday" type="java.lang.String">
            <column name="BRITHDAY" length="10" not-null="true" />
        </property>
        <property name="company" type="java.lang.String">
            <column name="COMPANY" length="30" not-null="true" />
        </property>
        <property name="memo" type="java.lang.String">
            <column name="MEMO" length="10" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

解决方案 »

  1.   

    那有把USERID和USERNAME 搞成联合主键的.
    用USERID当主键就行了
      

  2.   

    弱弱的问问,自增的ID作为主键就好了,为什么还要把username作为主键。而且还是复合主键?没有很额外的要求,hibernate还是推荐用一个无意的子段作为单一主键就好了
      

  3.   

    userid用自增长,username数据库设为唯一键
      

  4.   

    userid用自增长。作为主键,自然是唯一的。username设置为唯一的,但是唯一却不要求一定是主键的。是业务上的需求的
      

  5.   

    我现在碰到了一个表中的双主键问题,当向表中插入数据时,出现org.hibernate.PropertyNotFoundException: Could not find a getter for id in class com.kjs.ww.domain.QwWarnE错误,搞了一天都没搞出来。请各位多指教。谢谢!!!
      

  6.   

    不好意思发错了
    org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():