【发布时间】:2023-03-08 07:56:01
【问题描述】:
我有两个实体类组织和用户,它们具有一对多关系(为了简单起见,使用 Groovy 代码!):
@Entity
class Organisation {
@Id Long id
String name
@OneToMany
List<User> users
}
@Entity
class User {
@Id Long id
String username
@ManyToOne(optional=false, cascade = CascadeType.Persist)
Organisation organisation
}
当我为新组织创建新用户时,一切正常:
def user = new User(organisation: new Organisation(...))
但是当我采用现有组织时,将其设置为 new 用户的组织属性时出现错误:
def user = new User(organisation: organisationRepository.findOne(orgId))
userRepo.save(user)
将导致:
org.hibernate.PersistentObjectException:分离的实体传递给 坚持:组织
我知道不能对分离的实体调用persist。但在那种情况下,由于我没有更改组织实体本身的任何内容,我认为 hibernate 会允许这样做。
我尝试将cascade = {CascadeType.Persist, CascadeType.Merge} 放入ManyToOne 注释中,但以同样的错误结束。
我想归档的东西是不能用休眠的,还是我在某个地方有思维错误?
【问题讨论】:
-
您必须以更好的方式管理数据库关系,在此处了解更多信息stackoverflow.com/questions/13370221/…
标签: java spring hibernate jpa orm