Hibernate注解:一对一主键关联
情形:两个表,my_site和my_site_company,通过主键site_id唯一关联。my_site的主键是自动增加,my_site_company的主键依赖于my_site。
#
# Source for table my_site
# DROP TABLE IF EXISTS `my_site`;
CREATE TABLE `my_site` (
`site_id` int(11) NOT NULL AUTO_INCREMENT,
`site_name` varchar(100) DEFAULT NULL COMMENT '站点名称',
`short_name` varchar(100) DEFAULT NULL COMMENT '简短名称',
PRIMARY KEY (`site_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; #
# Source for table my_site_company
# DROP TABLE IF EXISTS `my_site_company`;
CREATE TABLE `my_site_company` (
`site_id` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL COMMENT '公司名称',
`scale` varchar(255) DEFAULT NULL COMMENT '公司规模',
`industry` varchar(1000) DEFAULT NULL COMMENT '公司行业',
`contact` varchar(500) DEFAULT NULL COMMENT '联系方式',
`address` varchar(500) DEFAULT NULL COMMENT '公司地址',
PRIMARY KEY (`site_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Site.java:
@Entity
@Table(name = "my_site")
@SuppressWarnings("serial")
public class Site implements Serializable
{ // Site的主键是自动递增
@Id
@GeneratedValue
@Column(name = "site_id")
private Integer siteId; @Column(name = "site_name")
private String siteName; @Column(name = "short_name")
private String shortName; // Site通过主键一对一关联到Company,
// 在主键自动递增的对象这边写
@OneToOne(cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private Company company;
}
Company.java:
@Entity
@Table(name = "my_site_company")
@SuppressWarnings("serial")
public class Company implements Serializable
{
// Company的主键来源于site的主键
@Id
@Column(name = "site_id")
@GenericGenerator(name = "pkGenerator",
strategy = "foreign" ,
parameters = {@Parameter(name = "property", value = "site")})
@GeneratedValue(generator = "pkGenerator")
private Integer siteId; @Column
private String name; @Column
private String scale; @Column
private String industry; @Column
private String address; @Column
private String contact; @OneToOne(cascade = CascadeType.ALL,
mappedBy = "company")
private Site site;
}
CompanyController.java:
public class CompanyController extends SimpleController
{
@Autowired
SiteDao siteDao; @Autowired
CompanyDao companyDao; @RequestMapping
public String indexAction(Model model,
HttpServletRequest request) throws Exception
{
Site site = siteDao.fetchOne(1);
Company company = site.getCompany();
if (company == null)
company = new Company(); if (request.getMethod() != "POST")
{
model.addAttribute("entity", company);
return redirectDefaultView();
} RequestUtils.copyBeanProperties(company);
company.setSite(site);
site.setCompany(company);
companyDao.update(company); return redirectIndex(SUCCESS_SAVE);
} }
Hibernate注解:一对一主键关联的更多相关文章
- Hibernate关联映射1:一对一主键关联
2张表之间通过主键形成一对一映射关系,如一个人只能有一张身份证: t_identity_card表建表语句: CREATE TABLE `t_identity_card` ( `id` int(11) ...
- Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联
2018-11-10 22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...
- Hibernate5.2之一对一主键关联(四)
Hibernate5.2之一对一主键关联(四) 一.简介 一对一关联关系分为两种:a.主键关联:b. ...
- 010一对一 主键关联映射_双向(one-to-one)
² 两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ² 有两种策略可以实现一对一的关联映射 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库 ...
- 009一对一 主键关联映射_单向(one-to-one)
009一对一 主键关联映射_单向(one-to-one) ² 两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ² 有两种策略可以实现一对一的关联映射 主键关联:即让两个 ...
- hibernate 注解 联合主键映射
联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将 该类注解 ...
- hibernate一对一主键双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- java:Hibernate框架2(关联映射(多对一,一对多,一对多双向,一对一主键,一对一唯一外键,多对多双向))
hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE h ...
- HIBERNATE一对一双向外键联合主键关联
HIBERNATE一对一双向外键联合主键关联: 一. 创建主键类:这个主键必须实现serializedable接口和重写其中的hashCode方法和equals方法:为主键类添加一个叫做@Embedd ...
随机推荐
- oracle row_number()
要求查询每个用户对应的最大样品信息,忽然想到ms sql提供过 row_number() over(partition by 列 order by 列 desc),那么oracle可能也存在, 我的表 ...
- Intellij IDEA 的使用(创建项目、导入项目、同时部署多个项目、JRebel)等常见eclipse、myeclipse换idea必看
第一篇:Intellij IDEA 的使用 1.黑色主题 中文乱码修改 2.WEB项目的部署 以及自动编译 3.多项目的同时部署 4.相关插件提高工作效率 1.JRebel插件 实现热部署 2.Tas ...
- 用php自带的filter函数验证、过滤数据 -转载
PHP过滤器包含两种类型 Validation:用来验证验证项是否合法 Sanitization:用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除等. input_filters ...
- 用HTML5构建一个流程图绘制工具
在我们的开发工程中经常会使用到各种图,所谓的图就是由节点和节点之间的连接所形成的系统,数学上专门有一个分支叫图论(Graph Theroy).利用图我们可以做很多工具,比如思维导图,流程图,状态机,组 ...
- 通用的业务编码规则设计实现[转:http://www.cnblogs.com/xqin/p/3708367.html]
一.背景 每一个企业应用中不可避免的都会涉及到业务编码规则的问题,比如订单管理系统中的订单编号,比如商品管理系统中的商品编码,比如项目管理系统中的项目编码等等,这一系列的编码都需要管理起来,那么它们的 ...
- Android Virtual Device(AVD)屏幕大小调整
(1)各种常用机型的分辨率列表如下: WXGA800 480X800 WVGA854 480X854 WXGA720 ...
- sql2008读取excel
环境:win7(64位)+sql2008 sql语句: --启用Ad Hoc Distributed Queries: reconfigure reconfigure --使用完成后,关闭Ad Hoc ...
- IOS开发-视频,音频,录音简单总结
/***** * 1. 视频播放 * * @格式:mp4 mov m4v m2v 3gp 3g2 * * @系统框架使用:#import <MediaPlayer/MediaPlayer.h ...
- 【Java安装】Centos6.8 安装Java1.6
安装java 1.6 Centos6.8安装完成后,一般都安装了java,为了安装java1.6,需要卸载系统自带的java,主要步骤: 先安装java1.6,目的:为了防止先卸载系统自带java时, ...
- Windows2012 cannot access netapp CIFS share
NAS1> options cifs.smb2.signing.requiredcifs.smb2.signing.required off NAS1> options cifs.smb2 ...