2017-01-11 12 views
2

私のPOJOで1hibernate.id.new_generator_mappingsプロパティを設定する場所は?

によってインクリメントされ定義された私は...私は、Oracleを使用してい

をこの上であまりにも多くの時間を無駄にしたと私はシーケンス(MY_TABLE_SEQ)を持っている私が持っている:

@SequenceGenerator(name = "MY_SEQ", sequenceName="MY_TABLE_SEQ", allocationSize=50) 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="MY_SEQ") 

これは私に唯一の制約の問題をもたらします。私は、次のプロパティを設定する必要が私の理解から:

hibernate.id.new_generator_mappings=true 

私はhibernate.cfg.xmlファイルに設定を試してみたが、すべての違いを確認していないようです。私はpersistance.xmlに配置するサーバーポストを見つけましたが、これはスタンドアロンのアプリケーションで、Webコンテナはありません。

allocationSize = 1を設定すると、もちろん、次のシーケンスを取得するために各挿入のdbにヒットします。上記のプロパティを設定すると、それを解決することになっています。

答えて

0

私はOracleを試していませんが、AS400のDB2テーブルに挿入するのと同様の問題がありました。

私は、DB2テーブルのID列のIDフラグを削除しなければならず、代わりにカスタムjpa/hibernateシーケンスジェネレータを使用しました。これは@IDエンティティフィールドのpojo/entityアノテーションに設定されています。

DB2は、SYSIBM.SYSSEQUENCESテーブルの欠落に関するエラーを表示していました。明らかに、hibernate(バージョン5.2)は、ネイティブDB2 IDの指定を認識しません。カスタムシーケンスが効果的な回避策でした。 @IDエンティティフィールドを


@GeneratedValue(発電= "テーブル"、戦略= GenerationType.TABLE)

@TableGenerator(名= "テーブル"、= 20 allocationSize)

この例では、テーブルを照会するたびに20個のシーケンス番号のプールを割り当てます。


次に、Hibernateはhibernate5 APIを一致列を持つ必要があります必要なテーブルを作成する - ...小文字でなければなりませんので、DB2のデフォルトに自動アッパーケースを回避するために名前の前後に引用符を置きます。これらの名前が大文字である場合、APIはエラーになります。

表: "hibernate_sequences" 使用2列の

例: "sequence_next_hi_value"(整数、NULL可能でない、0デフォルト) "SEQUENCE_NAME"(文字、サンプルの長さ20、ないNULL可能で、天然のデフォルト)使用方言の構成コードで


- EX:春ブートプログラム、これらのプロパティを追加します。

properties.put(「休止状態を。 supportsSequences "、" false "); properties.put( "hibernate.id.new_generator_mappings"、 "false");

と*。プロパティファイル:大文字と小文字を区別しスキーマの

spring.jpa.properties.hibernate.dialect.supportsSequences = falseを spring.jpa.properties.hibernate.id.new_generator_mappings = falseを


データベースシステムをしています/テーブル/フィールド名。また、すべてのタイプミスを監視します。プロパティ名。


pojo /エンティティには、テーブルにマップされるプライベートフィールドのみが含まれていることを確認してください。 serialVersionUIDなどのスタティックファイナルは正常です。


すぐにSQL Serverでも同様のことをやっていきます。

MySQLの場合、レコードを挿入するためにテーブルIDフィールドに定義されているID列を使用することに問題はありませんでしたので、これらの変更をすべて行う必要はありませんでした。 hibernateはMySQLのアイデンティティ指定を認識するので、より簡単な設定です。 @GeneratedValue(strategy = GenerationType.IDENTITY) は、pojoで必要とされたすべてでした。

私はこれで初心者ですから、いつもより良い方法を探しています...しかし、これは今のところうまくいきました。

関連する問題