Hibernate中ManyToOne,OneToMany,OneToOne的使用例
来源:互联网 发布:js原生排序 编辑:程序博客网 时间:2024/04/29 18:49
有3个表:
News:新闻表
NewsResource:新闻附件表
Resource:资源表
表关系:
1个新闻(News)对应多条新闻附件(NewsResource)
News:ID <---> NewsResource:news_id
1个新闻附件(NewsResource)对应1个资源(Resource)。
NewsResource:resource_id <---> Resource:ID
实体类如下:
News:
@Entity@Table(name="news")public class NewsEntity implements Serializable{ private static final long serialVersionUID = 48L; @Id @GeneratedValue @Column(name="ID") private Long id; @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="news") private Set<NewsResourceEntity> newsResource; //其他内容省略}
NewsResource:
关于NewsResource表,有两种写法:
方法1:
这种写法用于不想和news表做级联更新,只想做级联查询的情况。news_id和resource_id都定义了2次,上面@Column用于自己表的更新,下面的@JoinColumn用于级联查询的时候的Join列。
@Entity@Table(name="newsresource")public class NewsResourceEntity implements Serializable{ private static final long serialVersionUID = 48L; @Id @GeneratedValue @Column(name="ID") private Long id; @Column(name = "news_id") private Long newsId; @Column(name = "resource_id") private Long resourceId; @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) @JoinColumn(name="news_id", insertable = false,updatable = false) private NewsEntity news; @OneToOne(optional = false, cascade = CascadeType.MERGE) @JoinColumn(name = "resource_id", referencedColumnName = "id", unique = true, insertable = false,updatable = false) private ResourceEntity resource; //其他内容省略}
方法2:
这种写法就是典型的级联查询+级联更新。
<pre name="code" class="java">@Entity@Table(name="newsresource")public class NewsResourceEntity implements Serializable{private static final long serialVersionUID = 48L;@Id@GeneratedValue@Column(name="ID")private Long id;@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)@JoinColumn(name="news_id")private NewsEntity news;@OneToOne(optional = false, cascade = CascadeType.MERGE)@JoinColumn(name = "resource_id", referencedColumnName = "id", unique = true)private ResourceEntity resource; //其他内容省略}Resource:
@Entity@Table(name="resource")public class ResourceEntity implements Serializable {private static final long serialVersionUID = 48L;@Id@GeneratedValue@Column(name="ID")private Long id;@OneToOne(optional = true, cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy = "resource")private NewsResourceEntity newsResource; //其他内容省略}
另外,懒加载(LAZY)如果遇到问题,请参照相关文章:
http://blog.csdn.net/sunroyi666/article/details/51890571
0 0
- Hibernate中ManyToOne,OneToMany,OneToOne的使用例
- Hibernate onetomany onetoone manytoone样例
- Hibernate中@OneToMany与ManyToOne的mappedBy和@JoinColumn区别
- Hibernate的onetomany和manytoone联合使用(十八)
- hibernate注解onetomany manytoone
- Hibernate @OneToMany & @ManyToOne
- Hibernate-----@OneToMany VS @ManyToOne
- @ManyToOne 和@oneToMany中@@JoinColumn的区别
- manytoone 和onetomany hibernate配置
- 关于hibernate 注解 OnetoOne 或 ManyToOne 写法
- hibernate annotations OneToMany与ManyToOne 分析
- hibernate annotations OneToMany与ManyToOne 分析
- Hibernate学习总结:OneToMany/ManyToOne双向
- hibernate中的@OneToMany、@ManyToOne以及@ManyToMany
- @ManyToOne @OneToMany
- Hibernate中onetomany的总结
- 11hibernate hibernate的关系映射之OneToMany和ManyToOne(重点)
- hibernate中Annotation中manyToOne使用:
- 19javascript与框架
- Python从入门到放弃(二):核心数据类型
- mysql复合索引、普通索引总结
- 【android学习】socket传输中,流的关闭
- 基于 flask 框架的模拟instagram 图片分享网站的开发 6
- Hibernate中ManyToOne,OneToMany,OneToOne的使用例
- MFC双缓冲典型代码
- sys.modules
- 21javascript异常处理
- JAVA 图片处理
- 安卓中点击不同按钮切换不同到Fragment
- mybatis学习笔记(十)一对多关联表查询
- iOS7-9。获取iOS设备uuid
- HDU3939Sticks and Right Triangle勾股数,容斥,欧拉筛,积性函数