假设我有两个实体:“组”和“用户”。每个用户可以是多个组的成员,每个组可以有多个用户。
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
现在,我要删除一个组(假设它有很多成员)。
问题是,当我在某个组上调用EntityManager.remove()时,JPA提供程序(在我的情况下为Hibernate) 不会从联接表中删除行,
并且由于外键约束,删除操作也会失败。在User上调用remove()可以正常工作(我想这与拥有关系的一方有关)。
那么在这种情况下如何删除组?
我想出的唯一方法是加载组中的所有用户,然后为每个用户从其组中删除当前组并更新用户。但是,对于该组中的每个用户调用update()只是为了能够删除该组,这似乎很荒谬。
Group
实体,因为当前User
是所有者。groups
和users
不与彼此组合。我的意思是,从Group1.users中删除User1实例后,User1.groups集合不会自动更改(这对我来说很令人惊讶),User
是所有者。然后,在删除用户时,关系用户组将自动更新。但是,在删除组时,您必须像这样删除自己的关系:entityManager.remove(group)
for (User user : group.users) {
user.groups.remove(group);
}
...
// then merge() and flush()
我有两个实体,用户和电影。他们是很多双向的关系。我的问题是,当我通过我的控制器删除一部电影时,它也会删除所有与该电影相关的实体。My user和this user角色和movie实体。我要做什么,从表中删除电影实体,并保持用户与他的角色,而不是删除他们所有。
我有这些实体: 用户 角色 权限 一个用户有很多角色,一个角色有很多权限。 null
在我的Spring/MySql系统中,我有一些Jpa实体,它们通过父关系上的joinTable在OneToMany关系中连接。在这种情况下,一个帖子有很多评论。 如果我尝试删除Post实体,问题是生成的SQL试图删除仍在连接表中的注释,从而触发外键冲突。 什么是正确的方法: 删除连接表项 删除连接表左侧父关系实体 删除连接表右侧子关系实体 要记住的一些事情: 还有其他实体通过oneTo多项关系拥有
问题内容: 我正在使用Hibernate 3.3.1,并正在对该示例表结构进行建模,但是在创建具有额外属性的联接表时遇到了麻烦。 是和表之间的多对多关系。联接表就是该表。我遵循这里提到的方法。 现在我有了实体 和 和 和 我使用Apache Derby进行测试,但是在生成的表结构上遇到了麻烦。 看来它已经创建了我所有的列作为主键。为什么会这样呢? 问题答案: 您可以使用实体的类作为IdClass的
我在JPA中定义了两个实体:Employee和Skill。 在这些实体之间定义了relationship@ManyTomany。 现在我有这样的问题:如果我删除技能实体使用实体管理器。它移除OK。但是在@jointable中,在数据库employee_skill中,仍然存在与这个被删除的实体(其id)的关联。 我不想在移除技能时移除员工,所以所有的级联移除或孤立移除在这里都不有用。 我考虑了为什么
我的两个实体有一对一的关系 我尝试通过此方法删除我的用户实体 PasswordResetTokenRepository类,我在服务方法中调用了该类,用于删除用户,我使用了常规Hibernate方法deleteById(Long id) 但是当我尝试通过此方法删除时,出现此错误:not-null 属性引用 null 或瞬态值:kpi.diploma.ovcharenko.entity.user.Pa