情形:两个表,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注解:一对一主键关联的更多相关文章

  1. Hibernate关联映射1:一对一主键关联

    2张表之间通过主键形成一对一映射关系,如一个人只能有一张身份证: t_identity_card表建表语句: CREATE TABLE `t_identity_card` ( `id` int(11) ...

  2. Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联

    2018-11-10  22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...

  3. Hibernate5.2之一对一主键关联(四)

                                                      Hibernate5.2之一对一主键关联(四) 一.简介 一对一关联关系分为两种:a.主键关联:b. ...

  4. 010一对一 主键关联映射_双向(one-to-one)

    ²  两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ²  有两种策略可以实现一对一的关联映射 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库 ...

  5. 009一对一 主键关联映射_单向(one-to-one)

    009一对一  主键关联映射_单向(one-to-one) ²  两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ²  有两种策略可以实现一对一的关联映射 主键关联:即让两个 ...

  6. hibernate 注解 联合主键映射

    联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将 该类注解 ...

  7. hibernate一对一主键双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  8. java:Hibernate框架2(关联映射(多对一,一对多,一对多双向,一对一主键,一对一唯一外键,多对多双向))

      hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE h ...

  9. HIBERNATE一对一双向外键联合主键关联

    HIBERNATE一对一双向外键联合主键关联: 一. 创建主键类:这个主键必须实现serializedable接口和重写其中的hashCode方法和equals方法:为主键类添加一个叫做@Embedd ...

随机推荐

  1. oracle row_number()

    要求查询每个用户对应的最大样品信息,忽然想到ms sql提供过 row_number() over(partition by 列 order by 列 desc),那么oracle可能也存在, 我的表 ...

  2. Intellij IDEA 的使用(创建项目、导入项目、同时部署多个项目、JRebel)等常见eclipse、myeclipse换idea必看

    第一篇:Intellij IDEA 的使用 1.黑色主题 中文乱码修改 2.WEB项目的部署 以及自动编译 3.多项目的同时部署 4.相关插件提高工作效率 1.JRebel插件 实现热部署 2.Tas ...

  3. 用php自带的filter函数验证、过滤数据 -转载

    PHP过滤器包含两种类型 Validation:用来验证验证项是否合法 Sanitization:用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除等. input_filters ...

  4. 用HTML5构建一个流程图绘制工具

    在我们的开发工程中经常会使用到各种图,所谓的图就是由节点和节点之间的连接所形成的系统,数学上专门有一个分支叫图论(Graph Theroy).利用图我们可以做很多工具,比如思维导图,流程图,状态机,组 ...

  5. 通用的业务编码规则设计实现[转:http://www.cnblogs.com/xqin/p/3708367.html]

    一.背景 每一个企业应用中不可避免的都会涉及到业务编码规则的问题,比如订单管理系统中的订单编号,比如商品管理系统中的商品编码,比如项目管理系统中的项目编码等等,这一系列的编码都需要管理起来,那么它们的 ...

  6. Android Virtual Device(AVD)屏幕大小调整

    (1)各种常用机型的分辨率列表如下: WXGA800                 480X800 WVGA854                 480X854 WXGA720          ...

  7. sql2008读取excel

    环境:win7(64位)+sql2008 sql语句: --启用Ad Hoc Distributed Queries: reconfigure reconfigure --使用完成后,关闭Ad Hoc ...

  8. IOS开发-视频,音频,录音简单总结

    /***** * 1. 视频播放 * *  @格式:mp4 mov m4v m2v 3gp 3g2 * *  @系统框架使用:#import <MediaPlayer/MediaPlayer.h ...

  9. 【Java安装】Centos6.8 安装Java1.6

    安装java 1.6 Centos6.8安装完成后,一般都安装了java,为了安装java1.6,需要卸载系统自带的java,主要步骤: 先安装java1.6,目的:为了防止先卸载系统自带java时, ...

  10. Windows2012 cannot access netapp CIFS share

    NAS1> options cifs.smb2.signing.requiredcifs.smb2.signing.required off NAS1> options cifs.smb2 ...