Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JPA进行合成和删除_Java_Jpa_Annotations_Eclipselink - Fatal编程技术网

Java 使用JPA进行合成和删除

Java 使用JPA进行合成和删除,java,jpa,annotations,eclipselink,Java,Jpa,Annotations,Eclipselink,我有一个角色,可以引用一组权限s 如何注释这两个类以适应组合(而不是聚合),其中: 如果启用了角色,则权限将继续存在 删除 如果角色没有权限s,则它将继续存在 附言:合并/持久化应该如何处理这一问题?这是一个ManyToMany关系,用@ManyToMany注释。如果需要有一个单向多个,那么只需注释与权限相关的角色类的成员字段或getter方法(分别取决于访问类型字段或属性)。如果需要双向关系,则必须对这两个类进行注释,并在非拥有方/目标方指定mappedBy注释属性,即权限类 要实现此关系

我有一个
角色
,可以引用一组
权限
s

如何注释这两个类以适应组合(而不是聚合),其中:

  • 如果启用了
    角色
    ,则
    权限
    将继续存在 删除
  • 如果
    角色没有
    权限
    s,则它将继续存在

附言:合并/持久化应该如何处理这一问题?

这是一个
ManyToMany
关系,用
@ManyToMany
注释。如果需要有一个
单向多个
,那么只需注释与
权限
相关的
角色
类的成员字段或getter方法(分别取决于访问类型字段或属性)。如果需要
双向
关系,则必须对这两个类进行注释,并在非拥有方/目标方指定
mappedBy
注释属性,即
权限

要实现此关系,如果尚未存在,
联接表
将被创建(如果存在,
@JoinTable
可能需要指定确切的表名和列名)

关于持久化和合并,当
角色
持久化/合并时,关联的
权限
也将被持久化/合并,并且将创建联接表中的关联项,就像在多对多关系中一样,默认情况下,所有者端操作是级联的(所有者侧是没有
mappedBy
属性的侧)

因此,双向多对多的设置类似于

@Entity
public class Role {
....
 @ManyToMany
    private Set<Permission> permissions;
....


@Entity
public class Permission{
.....
@ManyToMany(mappedBy="permissions")
    private List<Role> roles;
....
@实体
公共阶级角色{
....
@许多
私有设置权限;
....
@实体
公共类许可{
.....
@ManyToMany(mappedBy=“权限”)
私有列表角色;
....
还可以查看规范 这本好书