2012-03-31 8 views
1

申し訳ありませんが、この質問をする方法を明確にしていません。ここに私のシナリオです:JPA:挿入後に更新されたエンティティオブジェクトを取得するにはどうすればよいですか?

コントローラ

HostSite hostSite=new HostSite(); 
hostSite.setUrl("www.somesite.com"); 
// hostSite.getId() is null, naturally 
hostSiteService.saveHostSite(hostSite); 
// hostSite.getId() is still null 

HostSiteServiceImpl

public void saveHostSite(HostSite hostSite) { 
    hostSiteDAO.save(hostSite); 
} 

HostSiteDAOImpl

public void save(HostSite hostSite) { 
    if(hostSite!=null) { 
     getEntityManager().merge(hostSite); 
    } 
} 

ご覧のとおり、どこでもエンティティオブジェクトの参照は変更していません。私はマージ操作が永続オブジェクトをテーブルレベルで初期化されたデータで更新するという印象が強かった。私の場合、それは自動生成されたidだけです。しかし、作成タイムスタンプなどの他のものが存在する可能性があります。この生成されたIDを永続オブジェクトに設定するには、何かが必要ですか?操作自体に問題はありません。レコードは生成されたIDとともにテーブルに保存されます。

JPAプロバイダ用のHibernate 4を使用しています。

答えて

5

'merge()は新しいインスタンスを返します。すべてのメソッドがエンティティを返します。

関連する問題