如何获取合并的 JPA 实体的 id

发布于 2024-12-07 12:54:48 字数 438 浏览 0 评论 0原文

我有一个小应用程序,将实体存储到数据库中。我用下面的方式做到这一点:

class Entity {
    privete id;
    String somePropertie;
    // getters and setters
}
// In main class
Entity newEntity = new Entity();
newEntity.setSomePropertie("somePropertie");
Entity entity = entityManager.merge(newEntity);
System.out.println("This is id of stored entity:", entity.getId())

这里没有写 jpa 注释。但实体存入数据库,但打印的id为0;我使用 spring 驱动的事务,我需要这个实体来稍后更新实体 id。

I have a little application where I store entity to DB. I do this in next way:

class Entity {
    privete id;
    String somePropertie;
    // getters and setters
}
// In main class
Entity newEntity = new Entity();
newEntity.setSomePropertie("somePropertie");
Entity entity = entityManager.merge(newEntity);
System.out.println("This is id of stored entity:", entity.getId())

The didn't write the jpa annotations here. But the entity is stored to database, but the printed id is 0; I using transaction driven by spring, I need this entity for later updates of the entity id.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扬花落满肩 2024-12-14 12:54:48

EntityManager.merge(..) 获取一个实例并返回一个被管理的实例。如果是瞬态实例,它会返回一个新实例(不会修改原始实例),

因此您的 mergeEntity(..) 方法应该返回 em.merge(entity)

EntityManager.merge(..) gets an instance and returns an instance that is managed. And in case of transient instances it returns a new instance (does not modify the original)

So your mergeEntity(..) method should return em.merge(entity)

愿与i 2024-12-14 12:54:48

尝试过

Entity entity = entityManager.merge(newEntity);
System.out.println("This is id of stored entity:", entity.getId())

如果我错了,请纠正我,但是您是否在同一笔交易中

?还可以尝试将 id 设置为 Long 而不是 long (或 Integer 而不是 int;从您的信息中还不清楚定义)

Correct me if I am wrong, but have you tried with

Entity entity = entityManager.merge(newEntity);
System.out.println("This is id of stored entity:", entity.getId())

in the same transaction?

Also try setting id to Long rather than long (or Integer rather than int; it is not clear from your definition)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文