Hibernate注解:一对多外键关联
2014-09-26 09:22
246 查看
情形:两个表,cms_mode是主表,cms_model_field是子表,cms_model_field的model_id字段关联到cms_model的主键。
CmsModel.java:
CmsModelField.java:
@OneToMany Default: FetchType.LAZY默认是延迟抓取,不需要左联接。如果是FetchType.EAGER即时抓取,就会是左联接查询。
@ManyToOne Default: FetchType.EAGER默认是即时抓取,做连接。如果fetch=FetchType.LAZY不是左联接,在需要One的时候直接select。
# # Source for table cms_model # DROP TABLE IF EXISTS `cms_model`; CREATE TABLE `cms_model` ( `model_id` int(11) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `title` varchar(100) NOT NULL DEFAULT '' COMMENT '名称', ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='CMS模型表'; # # Source for table cms_model_field # DROP TABLE IF EXISTS `cms_model_field`; CREATE TABLE `cms_model_field` ( `field_id` int(11) NOT NULL AUTO_INCREMENT, `model_id` int(11) NOT NULL DEFAULT '0' COMMENT '模型ID', `name` varchar(50) DEFAULT NULL COMMENT '名称', `title` varchar(250) NOT NULL DEFAULT '' COMMENT '标题', `priority` int(11) NOT NULL DEFAULT '0' COMMENT '权重', `data_type` char(1) NOT NULL DEFAULT '1' COMMENT '数据类型(S-字符,N-数值,D-日期,T-备注)', `is_reserved` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否保留', PRIMARY KEY (`field_id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='CMS模型字段表';;
CmsModel.java:
@Entity @Table(name = "cms_model") @SuppressWarnings("serial") public class CmsModel implements Serializable { @Id @GeneratedValue @Column(name = "model_id") private Integer id; @Column(name = "name") private String name; @Column(name = "title") private String title; @OneToMany(mappedBy = "model", fetch = FetchType.LAZY) private List<CmsModelField> fieldList; }
CmsModelField.java:
@Entity @Table(name = "cms_model_field") @SuppressWarnings("serial") public class CmsModelField implements Serializable { @Id @GeneratedValue @Column(name = "field_id") private Integer id; @Column(name = "name") private String name; @Column(name = "title") private String title; @Column(name = "data_type") private String dataType; @Column(name = "priority") private Integer priority; @Column(name = "is_reserved") private Boolean reserved; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "model_id") private CmsModel model; }
@OneToMany Default: FetchType.LAZY默认是延迟抓取,不需要左联接。如果是FetchType.EAGER即时抓取,就会是左联接查询。
@ManyToOne Default: FetchType.EAGER默认是即时抓取,做连接。如果fetch=FetchType.LAZY不是左联接,在需要One的时候直接select。
相关文章推荐
- Hibernate关系映射级别注解(一对多单向外键关联、一对多(多对一)双向外键关联)
- hibernate多对一单向外键关联——注解实现
- Hibernate关系映射级别注解(多对多单向外键关联、多对多双向外键关联)
- 06-hibernate注解-一对多单向外键关联
- Hibernate注解完成主从表外键关联
- 07-hibernate注解-一对多(多对一)双向外键关联
- Hibernate的注解方式:多对多双向关系基于外键关联
- Hibernate关系映射级别注解(一对一单向外键关联)
- Hibernate关系映射级别注解(多对一单向外键关联)
- 04-hibernate注解-一对一双向外键关联
- 08-hibernate注解-多对多单向外键关联
- 08-hibernate注解-多对多双向外键关联
- Hibernate关系映射级别注解(一对一双向外键关联、一对一双向外键联合主键)
- 05-hibernate注解-多对一单向外键关联
- hibernate一对一唯一外键关联
- hibernate---一对一单向外键关联--XML
- Hibernate注解实现复杂主键(多主键,外键当主键,主键自动生成,普通主键)
- hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询
- Hibernate一对一单向外键关联(简单总结了5种方法)
- Hibernate4注解开发,使用hbm2ddl生成表时,不生成外键的解决方法