2

在庫監視サイトの Invoice という名前の MySQL テーブルがあり、invoice_number は bigint(19) AUTO_INCREMENT フィールドです。

現在、AUTO_INCREMENT 値は 1 です。

クライアントは、invoice_number を 50000 から開始することを望んでいます。次のスクリプトを使用して、ALTER TABLE INVOICES AUTO_INCREMENT = 50000; をリセットします。SQLDBX にデータを挿入するための挿入スクリプトを作成すると、invoice_number が 50000 から挿入されます。しかし、アプリケーション (Web アプリケーション) を使用してレコードを挿入しようとすると、invoice_number の値が 1 から始まります。 mysql データベースにデータを挿入するための Spring-JDBC テンプレート。

4

1 に答える 1

2

この問題は、Invoice の Hibernate HBM マッピングにあります。Invoice Number のジェネレーター クラスは Increment です。

<id name="invoiceNumber" column="INVOICE_NUMBER">
   <generator class="increment"/>
</id>

ジェネレータークラスをアイデンティティに変更することで機能しました。

<id name="invoiceNumber" column="INVOICE_NUMBER">
    <generator class="identity"/>
</id>

詳細については 、Auto Increment ID MYSQL 5 での Hibernate の問題を確認してください。 また、この Hibernate が MySQL の auto_increment 主キー フィールドを尊重していないことも確認してください。

于 2012-09-06T15:55:50.343 に答える