当我持有SimpleJpaRepository#save()
的实体时,它不会修改它。例如。它不会设置实体的新ID。
除此之外,一切正常。该实体被持久化并被赋予身份。如果我从数据库中读取它,我可以看到id。这是正常的行为吗?我知道#save方法返回持久化实体但我更喜欢它修改给定实体。有没有办法配置这个?
由于
- 编辑
让我们假设这就是我所做的:
User user = new User();
// do something with user
userRepository.save(user);
然后user
保持不变。对象是写入数据库但用户不会被管理。 saveAndFlush(user)
也不会导致不同的行为。我能做的是user = userRepository.save(user)
。在这种情况下,用户成为托管实例。但是从Hibernate我习惯只保存对象,我提交的对象就被管理了。有没有办法用JPA来实现这个目标?
答案 0 :(得分:1)
请检查实体中的@Id
配置。请确保您在@GeneratedValue
属性上正确定义了Id
。此属性在区分insert
和update
操作方面起着关键作用。