簡體   English   中英

如何使用JPA獲取最后一個持久化實體的Id

[英]How to get Id of last persisted entity using JPA

我正在尋找一種智能且易讀的方法來獲取使用JPA的持久化實體的id。 id是一個Integer

人們可以想到以下解決方案:

  1. 不使用GeneratedValue策略。 這需要在持久化之前尋找一個免費的id,然后將它放入要保留的實體中:繁瑣,但有效。
  2. 使用GeneratedValue策略。 持久性提供程序將負責id生成。 這看起來更聰明,但如何獲得身份證?

請參閱下面的解決方案2

MyEntity en = new MyEntity();
en.setName("My name");
em.persist(en);
System.out.println(en.getId());

這打印出一個空id!

有什么建議? 我正在使用MySql,EclipseLink,但需要一個可移植的解決方案。

persist不保證生成ID。 保證ID僅在刷新時生成。 因此,如果在事務結束之前確實需要ID(並且實體管理器因此被刷新),則明確調用flush()以獲取ID:

MyEntity en = new MyEntity();
en.setName("My name");
em.persist(en);
em.flush();
System.out.println(en.getId());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM