2017-03-23 15 views
1

私は、主キーでも、その一部でもないauto_incrementフィールド "autoValue"を含むテーブルを持っています。Hibernateで保存した後にauto_incrementedフィールドを取得できません

public class MyClass { 

    @Id 
    private String id; 

    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column 
    private Integer autoValue; 
    .... 
} 

I行をデータベースに挿入され、AUTO_INCREMENTが正常に行われている(この方法は、(保存))私のオブジェクトを保存します。しかし、autoValueの値を取得しようとすると、Null値が返されます。

MyClass obj = new MyClass(); 
obj.setId("newStringId"); 
session.save(obj); 
obj.getAutoValue();// <= this returns null 

誰かがautoValueの値を取得するための問題と処理方法を教えてください。

答えて

0

Hibernateセッションをリフレッシュしてオブジェクトをデータベースの新しい状態と同期させることができます。これは自動生成された値を反映する必要があります。休止documentationから

MyClass obj = new MyClass(); 
obj.setId("newStringId"); 
session.save(obj); 
session.flush(); 
session.refresh(obj); 
obj.getAutoValue(); // should have the auto generated value 

これはリフレッシュ()メソッドを使用して、いつでも再ロードするオブジェクトとそのすべてのコレクションすることが可能です。これは、データベース・トリガーを使用してオブジェクトの一部のプロパティーを初期化する場合に便利です。

+0

ありがとうございました。私はすでに試してみましたが動作しませんし、またnullを返します –

+1

実際には、私は自分のコードでリフレッシュ(obj)flush()を呼び出した後に忘れてしまった。本当にありがとうございました。私はその質問が答えられたと思います。 –

関連する問題