2017-07-03 9 views
0

Oracle 12cでHibernateを使用しています。 保存操作を実行した後で、DBにシーケンスを持つ主キー(自動インクリメント)の正しい値が返されません。 dB値での動作を保存した後、次のコードユーザーIDカラム(オートインクリメント)で はDB、 で配列を有する81であるが、休止状態に戻り値は3441.(値は一例である) マイコードである: 'HibernateがOracle 12cで自動増分列の正しい値を返さない

User user = new User(); 
User.setUserName(userName); 
User.setRoleId(roleId); 
getHibernateTemplate().save(User); 
int userId = User.getUserId(); 

注:同じコードが他のDBとうまく機能しています。

+1

テーブルはどのように定義されていますか? – bradimus

答えて

1

オラクルはを他のdbsと同様に処理しません。あなたはこれらの二つの

@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen") 
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ") 

ようなもので、その注釈を交換する必要がありますだけでなくhereを説明しました。

+0

お返事ありがとうございました。上記の変更を行った後、同じ問題が発生しています。 – Pramod

+0

@Pramod - あなたは「上記の変更後...」と言っています。つまり、あなたはOracleでMY_ENTITY_SEQも作成しましたか? https://docs.oracle.com/database/121/SQLRF/statements_6017.htm#SQLRF01314 –

+0

DB内で自分のシーケンス名で「MY_ENTITY_SEQ」という名前を変更しました。 – Pramod

関連する問題