java - SimpleJpaRepository 不修改持久化实体

标签 java spring hibernate jpa

当我使用 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 来归档这个?

最佳答案

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

关于java - SimpleJpaRepository 不修改持久化实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014910/

相关文章:

java - 如何在 JavaScript 中使用 Azure 认知人脸 API 验证两个图像

java - 为什么maven创建的jar没有来自依赖项的库

java - 如何从参数化类型方法参数中获取参数化类型类?

java - 在java中连接计算税率的类

java - 客户端发送的请求在语法上不正确,列表为复选框

javascript - 如何正确向Controller发送参数? ( thymeleaf +Javascript)

Java,将可序列化对象转换(转换)为其他对象

java - 在持久化期间忽略 JPA 字段的最简单方法是什么?

java - 使用 Play2 框架进行 Spring 属性注入(inject)

spring - hibernate模块的类加载器看不到hibernate-c3p0