Hibernate注解:一对多外键关联
hibernate 注解 关联 一对
2023-09-11 14:16:42 时间
情形:两个表,cms_mode是主表,cms_model_field是子表,cms_model_field的model_id字段关联到cms_model的主键。
# # 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。
相关文章
- 程序员的量化交易之路(16)--Hibernate注解总结_转发的(4)
- 第十一章 Hibernate的查询 Hibernate可以使用的查询语言
- hibernate联合主键 注解方式
- 在myEclipse中根据图表自动生成Hibernate文件
- hibernate注解实体类(Dept.java)
- hibernate注解的测试
- Hibernate中使用Criteria查询及注解——( EmpCondition)
- Hibernate中使用Criteria查询及注解——(DeptTest.java)
- Hibernate中使用Criteria查询及注解——(Dept.hbm.xml)
- Hibernate中使用Criteria查询及注解——(Emp.hbm.xml)
- Hibernate中使用Criteria查询及注解——(Emp.hbm.xml)
- hibernate正向生成数据库表以及配置——hibernate.cfg.xml
- Hibernate基本概念 (2)
- Hibernate学习之hibernate.cfg.xml
- Hibernate -- 注解(Annotation)关系映射
- ORM与hibernate概述
- java注解,通过反射解析注解,模仿hibernate,获取sql语句。
- 07-hibernate注解-一对多(多对一)双向外键关联
- spring hiberante 集成出现异常 java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor
- hibernate系列(三)多对多的关联关系
- Hibernate 动态表名映射(数据库分表) NamingStrategy
- hibernate插入中文到mysql数据库乱码
- Hibernate持久化对象三种状态
- Hibernate学习--hibernate延迟加载原理-动态代理(阿里电面)
- Java Persistence with Hibernate中文版Hibernate实战第2版勘误
- [1] Hibernate
- 【SSH2(理论+实践)】--Hibernate步步(一个)
- Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构?
- Hibernate一对多映射列表实例(使用xml文件)