java 个对象的 ID 未与数据库同步

ID of java objects not synchronizing with database

我发现的唯一 link 接近于我正在经历的是这个: How do you synchronize the id of a java object to its associated db row? 并没有太多的解决方案。

我的问题是我的 Java 对象在添加到我的数据库后没有更新,尽管 .commit()

    em.getTransaction().begin();
    System.out.println(eleve.getID());
    em.persist(eleve);
    em.getTransaction().commit();
    System.out.println(eleve.getID());

指的是这个class

public class Eleve {

private String _nom;
private String _prenom;
private float _ptsMerite;
@Id
private int _IDEleve;

并产生以下输出: 0 0

我认为我在持久性方面做得很好,因为它确实在数据库 (mySQL) 中创建了具有正确 ID 的对象,我已将其设置为自动增量。 我对所有内容(注释等)都使用 javax.persistence。

您是否尝试在您的 ID 字段中添加 @GeneratedValue 注释?

您可以选择四种可能的策略:

  • GenerationType.AUTO: JPA提供者将为底层数据库选择合适的策略。
  • GenerationType.IDENTITY:依赖于数据库中的 auto-increment 列。
  • GenerationType.SEQUENCE: 依赖数据库序列
  • GenerationType.TABLE: 使用数据库中的生成器table。

更多信息:https://www.baeldung.com/jpa-strategies-when-set-primary-key

如果您曾经更改为功能更强大的框架,这很可能会管理您的事务 (CMT),因此您不能(或不想)每次想要访问新实体的 ID 时都提交。在这些情况下,您可以使用 EntityManager#flush 将 Entity Manager 与数据库同步。