@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作用的属性必须是实体类

最新文章

  1. .NET 新标准介绍
  2. -[UIKeyboardLayoutStar release]: message sent to deallocated instance 0x7fbe49120000
  3. Verilog学习笔记简单功能实现(八)...............同步FIFO
  4. C++ 内联函数笔记
  5. JAVA 理解封装的概念,private私有的,public公有的
  6. [iOS微博项目 - 3.2] - 发送微博
  7. MTD技术介绍
  8. JavaScript 克隆对象
  9. UVALive 5791 Candy&#39;s Candy 解题报告
  10. 关联查询一张小表。对性能有影响吗(mysql)
  11. 网络通信 --&gt; CRC校验
  12. 洞见世界(1): 拉勾网大数据告诉你, 会计最高月薪达33k!
  13. 为什么Python编程被国家教育如此重视?请开始你的表演!
  14. resnet代码分析
  15. 使用iframe方式获得svg中的DOM元素,和svg 的 contentDocument 返回 null
  16. IDEA中添加javap反编译
  17. django-用户验证系统
  18. 4889: [Tjoi2017]不勤劳的图书管理员 树套树
  19. 单域名下多子域名同时认证HTTPS
  20. 自己写的一个Solr搜索实例,增删改查+高亮+分页

热门文章

  1. [bzoj1232][Usaco2008Nov]安慰奶牛cheer_Kruskal
  2. Linux网络编程:UDP实现可靠的文件传输
  3. $.getJSON() 未能执行回调函数的缘由
  4. 查看及更改MySQL数据库物理文件存放的位置
  5. Boost Replaceable by C++11 language features or libraries
  6. java学习笔记:Eclipse打开现有项目
  7. 将分布式-队列的实现交给redis
  8. 【SCOI 2011】 糖果
  9. E20170624-ts
  10. php使用163邮箱发送邮件