5

Hibernate は初めてで、Identity 列を使用できません。ID をジェネレーターとして使用して Java プログラムを実行すると、テーブルの ID 列に「...デフォルト値または null 値を挿入できません」というエラーが表示されます。インクリメントをジェネレーターとして使用すると、「...identity_insert がオフに設定されています」というエラーが発生します。

テーブルで Hibernate を使用できるように、この問題を修正する方法を教えてもらえますか? 他に情報を提供する必要がある場合はお知らせください。

私は次の瓶を使用しています:

  • hibernate-commons-annotations-4.0.1.Final.jar
  • hibernate-core-4.1.9.Final.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
  • sqljdbc4.jar

私のテーブル:

Create Table ABC (
    Unique_Number int IDENTITY(1,1),
    Col1 varchar(100),
    Col2 char(10),
    CONSTRAINT pk_ABC_id PRIMARY KEY(Unique_Number)
)

hbm.xml:

<class name="org.data.ABCData" table="ABC">
    <meta attribute="class-description">This is a test class.</meta>
    <id name="uniqueNumber" type="int" column="Unique_Number">
        <generator class="identity"/> <!-- tried identity, increment -->
    </id>
    <property name="col1" column="Col1" type="string" length="100"/>
    <property name="col2" column="Col2" type="string" length="10"/>
</class>

ABC 要素クラス:

public class ABC {

    private int uniqueNumber;
    private String col1;
    private String col2;

    public int getUniqueNumber() {
        return uniqueNumber;
    }

    public void setUniqueNumber(int uniqueNumber) {
        this.uniqueNumber = uniqueNumber;
    }

    public int getCol1() {
        return col1;
    }

    public void setCol1(String col1) {
        this.col1 = col1;
    }

    public int getCol2() {
        return col2;
    }

    public void setCol2(String col2) {
        this.col2 = col2;
    }
}

hibernate.cfg.xml:

<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class"></property>
  <property name="hibernate.connection.url"></property>
   <property name="hibernate.connection.username"></property>
   <property name="connection.password"></property>
   <property name="connection.pool_size">1</property>
   <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
   <property name="show_sql">false</property>
   <mapping resource="data.hbm.xml"/>
 </session-factory>
</hibernate-configuration>
4

2 に答える 2

1

nativeジェネレータークラスとして試す

<id name="uniqueNumber" type="int" column="Unique_Number">
    <generator class="native"/> <!-- This will pick identity, sequence or hilo based on type -->
</id>
于 2013-06-12T02:03:46.707 に答える
1

の使用は、sqljdbc4.jarMS SQL Server が使用されていることを示唆していますが、ダイアレクトは に設定されていHSQLDialectます。これを次のように変更します。

<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>

...これを解決する必要があります-IDnative生成でSQL Serverと互換性のある値が使用されるようにします。

于 2015-02-05T21:54:59.900 に答える