我發現的唯一一個接近我所經歷的鏈接是這個: 你如何將 java 物件的 id 同步到其關聯的 db 行? 并且沒有太多的解決方案。
我的問題是我的 Java 物件在添加到我的資料庫后沒有更新,盡管 .commit()
em.getTransaction().begin();
System.out.println(eleve.getID());
em.persist(eleve);
em.getTransaction().commit();
System.out.println(eleve.getID());
它指的是這個類
public class Eleve {
private String _nom;
private String _prenom;
private float _ptsMerite;
@Id
private int _IDEleve;
并產生這個輸出:0 0
我認為我在持久性方面做得很好,因為它確實在資料庫(mySQL)中創建了具有正確 ID 的物件,我將其設定為自動增量。我正在對所有內容(注釋等)使用 javax.persistence。
uj5u.com熱心網友回復:
您是否嘗試@GeneratedValue在 ID 欄位中添加注釋?
您可以選擇四種可能的策略:
GenerationType.AUTO:JPA 提供者將為底層資料庫選擇合適的策略。GenerationType.IDENTITY:依賴于資料庫中的自動增量列。GenerationType.SEQUENCE: 依賴于資料庫序列GenerationType.TABLE:使用資料庫中的生成器表。
更多資訊:https ://www.baeldung.com/jpa-strategies-when-set-primary-key
如果您曾經更改為更強大的框架,它很可能會管理您的事務 (CMT),因此您每次想要訪問新物體的 ID 時都不能(或不想)提交。在這些情況下,您可以使用EntityManager#flushEntity Manager 與資料庫同步。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462566.html
