【问题标题】:SimpleJpaRepository does not modify persisted entitySimpleJpaRepository 不修改持久化实体
【发布时间】:2012-10-12 11:14:09
【问题描述】:

当我用SimpleJpaRepository#save() 持久化一个实体时,它不会修改它。例如。它不会设置实体的新 id。

除此之外,一切正常。该实体正在被持久化并被赋予一个 id。如果我从数据库中读取它,我可以看到 id。这是正常行为吗?我知道#save 方法返回持久化的实体,但我更希望它修改给定的实体。有没有办法配置这个?

谢谢

--编辑

假设这就是我所做的:

User user = new User();
// do something with user

userRepository.save(user);

然后user 保持不变。对象写入数据库,但用户未成为托管对象。 saveAndFlush(user) 也不会导致不同的行为。我能做的是user = userRepository.save(user)。在这种情况下,用户成为托管实例。但是从 Hibernate 开始,我习惯于只保存对象,并且我提交的对象成为托管对象。有没有办法用 JPA 存档?

【问题讨论】:

    标签: java spring hibernate jpa


    【解决方案1】:

    请检查实体中的@Id 配置。请确保您在Id 属性上正确定义了@GeneratedValue。此属性在区分 insertupdate 操作方面起着关键作用。

    【讨论】:

    • 谢谢,但正如我所说,分配了 id,保存了实体,如果我再次从数据库中读取它,我可以看到 id。这在.save() 之后不会自动发生
    • @entek 试试saveAndFlush。它将立即刷新更改,并且您的返回对象应该具有填充的 Id。
    • 我更新了我原来的帖子,所以我的问题应该更清楚了。
    猜你喜欢
    • 2015-04-08
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多