博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate注解配置N:N关联
阅读量:6608 次
发布时间:2019-06-24

本文共 1566 字,大约阅读时间需要 5 分钟。

多对多

通过 @ManyToMany 注解定义多对多关系,同时通过 @JoinTable 注解描述关联表和关联条件。其中一端定义为 owner, 另一段定义为 inverse(对关联表进行更新操作,这段被忽略)。

@Entity

public class Employer implements Serializable {

  @ManyToMany(

    targetEntity=org.hibernate.test.metadata.manytomany.Employee.class,

    cascade={CascadeType.PERSIST, CascadeType.MERGE}

  )

  @JoinTable(

    name="EMPLOYER_EMPLOYEE",

    joinColumns=@JoinColumn(name="EMPER_ID"),

    inverseJoinColumns=@JoinColumn(name="EMPEE_ID")

  )

  public Collection getEmployees() {

    return employees;

  }

  ...

}

@Entity

public class Employee implements Serializable {

  @ManyToMany(

    cascade = {CascadeType.PERSIST, CascadeType.MERGE},

    mappedBy = "employees",

    targetEntity = Employer.class

  )

  public Collection getEmployers() {

    return employers;

  }

}

默认值:

关联表名:主表表名 + 下划线 + 从表表名;关联表到主表的外键:主表表名 + 下划线 + 主表中主键列名;关联表到从表的外键名:主表中用于关联的属性名 + 下划线 + 从表的主键列名。

用 cascading 实现传播持久化(Transitive persistence)

cascade 属性接受值为 CascadeType 数组,其类型如下:

• CascadeType.PERSIST: cascades the persist (create) operation to associated entities persist() is called or if the entity is managed 如果一个实体是受管状态,或者当 persist() 函数被调用时,触发级联创建(create)操作。

• CascadeType.MERGE: cascades the merge operation to associated entities if merge() is called or if the entity is managed 如果一个实体是受管状态,或者当 merge() 函数被调用时,触发级联合并(merge)操作。

• CascadeType.REMOVE: cascades the remove operation to associated entities if delete() is called 当 delete() 函数被调用时,触发级联删除(remove)操作。

• CascadeType.REFRESH: cascades the refresh operation to associated entities if refresh() is called  当 refresh() 函数被调用时,出发级联更新(refresh)操作。

• CascadeType.ALL: all of the above  以上全部

转载地址:http://axiso.baihongyu.com/

你可能感兴趣的文章
Azure Service Fabric正式发布
查看>>
GlassFish新纪元
查看>>
io.js 3.0发布:重写Buffer,支持PPC
查看>>
TOP 13大最热开源微服务Java框架
查看>>
日均千亿级别的数据请求量背后的秘密
查看>>
如何用Uber JVM Profiler等可视化工具监控Spark应用程序?
查看>>
shell学习记录
查看>>
Electric Cloud推出用于DevOps的预测分析平台
查看>>
用户吐槽:Azure DevOps CI 体验太差
查看>>
Helm:三思而后用
查看>>
红帽技术开放日:参与开源社区不只有贡献代码这一种方式
查看>>
Firefox Focus:一个iOS的私人浏览器
查看>>
.NET Core 3将支持Windows桌面应用
查看>>
Elixir Cookbook: 生成伞状项目
查看>>
APICloud重磅支持Atom编辑器,并建立开发工具核心库
查看>>
一个非常简单的 Shields badge 服务
查看>>
堡垒跳板机实现——ldap配置
查看>>
机器学习从入门到放弃之朴素贝叶斯
查看>>
努力翻译一篇中文最友好的,Web Audio API的使用相关的文章
查看>>
常用js设计模式整理
查看>>