@Onetomany用于实体类与数据库表映射中少的一方,请看下面的例子。

假设一个用户只有一种角色,用户和角色是onetomany的关系

用户实体

@Entity
@Table(name="user")
public class UserEntity implements Serializable{@Id@GenericGenerator(name="generator",strategy="uuid")@GeneratedValue(generator="generator")@Column(name="id")private String id;@Column(name="userName")private String userName;@Column(name="password")private String password;@Temporal(value=TemporalType.TIMESTAMP)private Date createDate;  ......

角色实体

@Entity
@Table(name="role")
public class RoleEntity implements Serializable{@Id@GenericGenerator(name="generator",strategy="uuid")@GeneratedValue(generator="generator")@Column(name="id")private String id;@Column(name="name")private String name;@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.PERSIST)private Set<UserEntity> user;

同时设置配置文件为<prop key="hibernate.hbm2ddl.auto">update</prop>

那么在项目启动后会自动生成三张表,分别是

角色表

用户表

角色用户表

@Onetomany 的参数:

mappedBy:用于双向关联时使用,否则会引起数据不一致的问题。

fetch:可取的值有FetchType.EAGER和FetchType.LAZY,前者表示主类被加载时加载,后者表示被访问时才会加载

cascade:CascadeType.PERSIST(级联新建)、CascadeType.REMOVE(级联删除)、CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)、CascadeType.ALL(选择全部)

@Manytoone

用于多对一,请看下例,

用户实体类

@Entity
@Table(name="user")
public class UserEntity implements Serializable{@Id@GenericGenerator(name="generator",strategy="uuid")@GeneratedValue(generator="generator")@Column(name="id")private String id;@Column(name="userName")private String userName;@Column(name="password")private String password;@Temporal(value=TemporalType.TIMESTAMP)private Date createDate;@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,optional=true)@JoinColumn(name="roleid",nullable=true)private RoleEntity role;

这样在项目启动后只有两种表

role表

user表

@Manytoone的参数:optional 属性是定义该关联类对是否必须存在,值为false时,关联类双方都必须存在,如果关系被维护端不存在,查询的结果为null。 值为true 时, 关系被维护端可以不存在,查询的结果仍然会返回关系维护端,在关系维护端中指向关系被维护端的属性为null。 optional 属性的默认值是true。

其它属性与onetomany相同。

@JoinColumn

与@Column用法相同,区别是@JoinColumn作用的属性必须是实体类

转载于:https://www.cnblogs.com/Bkxk/p/9957191.html

hibernate注解之@Onetomany、@Manytoone、@JoinColumn相关推荐

  1. Hibernate 注解学习

    /** * @author liuguangyi * @content ejb3注解的API定义在javax.persistence.*包里面. * * 注释说明: * @Entity -- 将一个类 ...

  2. Hibernate 注解映射

    首先要创建要映射的实体类 一对多映射,一个人可以有多个收货地址 User.java package star.july.b_annotation; import java.util.HashSet; ...

  3. Hibernate注解使用以及Spring整合

    (1) 简介: 在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hiber ...

  4. Hibernate学习之Hibernate注解总结

    Hibernate学习之Hibernate注解总结http://www.bieryun.com/3269.html 一.类级别的注解 @Entity name:表的名字(可选)一般表名和类名相同 必须 ...

  5. (转) Hibernate注解开发

    http://blog.csdn.net/yerenyuan_pku/article/details/70162268 Hibernate注解开发 在Hibernate中我们一般都会使用注解,这样可以 ...

  6. Hibernate 注解 实现一对多

    首先,我们知道,班级与学生是一对多关系.笔者就以此来编写Hibernate注解实现一对多关系. 先上[班级]类:Clazz.java (这里千万不要用class,否则你懂得...),代码如下: pac ...

  7. Hibernate注解详解(超全面)

    注解虽然配置简单易懂,但是对于复杂点的数据结构,配置起来反而比xml难(例如用xml配置,因为有帮助文件dtd的支持,因此能很好的利用提示来帮助编程,而注解代码提示不会呈现出项目中所有相关的类,如果你 ...

  8. Hibernate注解完整文档

    第 2 章 实体Bean       第 2 章 实体Bean 2.1. 简介 本章内容覆盖了EJB3.0实体bean的注解规范以及Hibernate特有的扩展. 2.2. 用EJB3注解进行映射 现 ...

  9. 双向@OneToMany / @ManyToOne关联

    编程的目标之一是代表现实世界中的模型. 通常,应用程序需要对实体之间的某些关系进行建模. 在上一篇有关Hibernate关联的文章中,我描述了建立"一对一"关系的规则. 今天,我将 ...

最新文章

  1. Mysql中varchar类型的猫腻!
  2. boost::spirit模块演示了 AST 的生成,然后将其转储为人类可读的格式
  3. idea断点_IDEA Debug 无法进入断点的解决方法
  4. linux执行sh提示非标准环境,Linux执行.sh文件时提示No such file or directory该怎么办(三种解决办法)...
  5. C++中数字和字符串的转换
  6. 偏序关系与全序关系的区别
  7. 新潮科技:人工智能歌词创作软件app,在线ai作词押韵写歌词,可以自己写歌词的软件
  8. app图标圆角角度_iOS和安卓APP启动图标的尺寸和圆角大小详解
  9. [收藏]VUE优秀UI组件库合集
  10. photoshop的抠图小结
  11. 笑话 php 程序员,[每天程序员]笑死人不偿命的程序员段子
  12. Ubuntu编辑文档和查看文档
  13. 芯海科技(深圳)股份有限公司实习生面经
  14. mac系统用键盘操作菜单栏
  15. Docker buil提示https://registry-1.docker.io/v2/: read tcp 10.221->:443: read: connection reset by peer
  16. PHP构造函数construct 析构函数destruct
  17. 【C语言】线性表输入输出
  18. java记事本环境变量_java第一课:安装环境变量和用记事本实现Hello World
  19. 重庆到西安谋划高铁 望融入西三角经济圈 3小时搞定
  20. dell重新安装Linux系统,Dell电脑安装Linux系统

热门文章

  1. c 路径 空格 参数_好听的炫舞名字空格最新_好听的炫舞名字空格2020
  2. python中time模块中的倒计时_Python中time模块与datetime模块在使用中的不同之处 python 的time模块获取的是什么时间...
  3. java null转换jason_Java进阶知识,轻松理解Java泛型
  4. 【网页前端设计Front end】HTML语言基础.下(看不懂你来打我)
  5. 算法训练 素因子去重
  6. apt-get需要安装mysql_ubuntu apt-get安装mysql失败-问答-阿里云开发者社区-阿里云
  7. sleep interrupted异常_Java高并发3中断线程以及isInterrupted与interrupted区别
  8. mysql遵循acid_mysql关系型数据库遵循ACID规则
  9. 谷歌生物医学专用翻译_文献翻译|知云翻译,写论文必备~
  10. 进阶学习(4.2) JVM 常用配置参数, GC 参数