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 ...
随机推荐
- generator函数
function* helloWordGenerator() { yield "hello"; yield "world"; return "endi ...
- 基于LBS的地理位置附近的搜索以及由近及远的排序
Nosql学习之Redis资料(一) http://redis.io/download 目前基于LBS地理位置的搜索已经应用非常广了,的确是个很方便的东西. 我们做程序的就是要考虑如何通过这些功能,来 ...
- MySql之on duplicate key update详解
在我们的日常开发中,你是否遇到过这种情景:查看某条记录是否存在,不存在的话创建一条新记录,存在的话更新某些字段.你的处理方式是不是就是按照下面这样? $result = mysql_query('se ...
- hadoop(四): 本地 hbase 集群配置 Azure Blob Storage
基于 HDP2.4安装(五):集群及组件安装 创建的hadoop集群,修改默认配置,将hbase 存储配置为 Azure Blob Storage 目录: 简述 配置 验证 FAQ 简述: hadoo ...
- Hive(三):SQuirrel连接hive配置
熟悉了Sqlserver的sqlserver management studio.Oracle的PL/SQL可视化数据库查询分析工具,在刚开始使用hive.phoenix等类sql组件时,一直在苦苦搜 ...
- Android SingleTask与SingleInstance的区别
Android SingleTask与SingleInstance的区别 原文地址 现有2个项目,taskA.taskB.taskA负责调用taskB中指定的界面. taskB中有3个界面,a.b.c ...
- Request Session生命周期及struts1 中service的编写
现在接手的项目是一个早期的struts1框架的项目.同时也是刚开始接触web 以及struts1架构. 在处理多个action时,有一个tab子页面需要每5s自动刷新一次. 然后在测试过程中发现,点击 ...
- IOS开发-键盘通知自定义键盘
利用键盘通知可实现效果如下: 1.UIKeyboardWillShowNotification: 当点击到可输入的控件上(一般是UITextField)时,键盘会自动显示,并且触发UIKeyboard ...
- UI设计的重要性--避免二义性的输入提示
昨天晚上发现了西安公路客运网上售票系统网站的密码找回系统存在安全漏洞,得出的结论是:密码找回页的漏洞: 1.用户名栏支持用户名.身份证.电话三种任意一种匹配.2.这一步是关键,密码找回问题提示栏居 ...
- 使用Lucene.Net实现全文检索
使用Lucene.Net实现全文检索 目录 一 Lucene.Net概述 二 分词 三 索引 四 搜索 五 实践中的问题 一 Lucene.Net概述 Lucene.Net是一个C#开发的开源全文索引 ...