3

Driver という名前の Entity クラスがあります。私の主キー生成メカニズムは

 @Id
 @GeneratedValue(strategy = GenerationType.AUTO)
 private Long id; 

次に、「driverCode」属性をドライバーに追加する必要があります。これは、プレフィックス (dri1、dri2) を持つ一意の値である必要があります。「dri」はプレフィックス値であり、キーはドライバーのプライマリ キー値である必要があります。追加したいドライバが初めて作成されるときの driverCode. そのためには, 最後に挿入されたドライバの主キーを取得する必要があります. 1 つ追加し, 接頭辞と連結します. 新しいレコードを挿入する前に, 最後に挿入されたレコードの主キーを取得する方法を教えてください.記録, これを行う簡単な方法はありますか?,

前もって感謝します、

4

2 に答える 2

7

の場合flush()、フィールドEntityManger@Idはデータベースに保存されようとしている値が入力されるため、挿入されている現在の値が既にわかっているため、最後に挿入された値を見つける必要はありません。

EntityManger em;
Driver d = new Driver();
em.persist(d);
em.flush();
long id = d.getId(); // this will give you the current record's id


また、「最後に挿入された ID を取得する」ことは非常にトリッキーで危険です。見た目ほど単純ではありません。

于 2012-09-09T02:36:55.080 に答える