数据库中没有设置主键,hibernate映射文件里面却指定了某个字段为主键,会不会有问题?有哪些问题?

解决方案 »

  1.   

    hibernate映射文件实体一定要指定主键!
      

  2.   

    事实上目前没看到错误,想知道其中原因。code 如下:
    <hibernate-mapping>
        <class name="com.ibm.bmcc.cpp.model.TAppAuthorized" table="T_APP_AUTHORIZED" schema="DB2INST1" dynamic-insert="true" dynamic-update="true">
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <generator class="native" />
            </id>
            <property name="entryId" type="java.lang.Integer">
                <column name="ENTRY_ID" />
            </property>
            <property name="userAId" type="java.lang.String">
                <column name="USER_A_ID" />
            </property>
            <property name="userBId" type="java.lang.String">
                <column name="USER_B_ID" />
            </property>
            <property name="createTime" type="java.util.Date">
                <column name="CREATE_TIME" />
            </property>
        </class>
    </hibernate-mapping>ddl如下
    CREATE TABLE T_APP_AUTHORIZED
     (ID           INTEGER         NOT NULL  GENERATED BY DEFAULT
        AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE, MINVALUE 1, MAXVALUE 2147483647, NO CYCLE, NO ORDER),
      ENTRY_ID     BIGINT,
      USER_A_ID    VARCHAR(64),
      USER_B_ID    VARCHAR(64),
      CREATE_TIME  TIMESTAMP
     );
    求解。。
      

  3.   

    @hibernate.id generator-class="sequence" column=""
    如果不加id,可以指定为主键的那个字段上加这句!
      

  4.   

    请查看深入浅出hibernate实体映射那一节!
      

  5.   

    项目用过jpa,好多数据库里没有设置主键,没报错!但如果不设置主键,可能有冲突!