Hibernate注解:一对一主键关联
2014-09-19 16:12
281 查看
情形:两个表,my_site和my_site_company,通过主键site_id唯一关联。my_site的主键是自动增加,my_site_company的主键依赖于my_site。
Site.java:
Company.java:
CompanyController.java:
# # 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一对一关联(共享主键) 注解 || xml
- Hibernate关系映射级别注解(一对一双向外键关联、一对一双向外键联合主键)
- hibernate双向一对一主键关联映射XML与注解版
- Hibernate一对一主键关联(基于annotation注解方式)
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- Hibernate一对一主键关联(基于annotation注解方式)
- Hibernate映射详解--一对一主键关联映射
- Hibernate关系映射(5)_一对一单向联合主键关联
- 【Hibernate】一对一主键关联映射
- hibernate一对一主键关联映射
- hibernate一对一主键唯一外键关联(一)
- Hibernate学习笔记_08_一对一单向、双向主键关联
- hibernate 关联关系 一对一 主键关联
- Hibernate 一对一主键单向关联
- Hibernate一对一主键关联
- Hibernate关联关系映射之一对一(主键关联)
- Hibernate一对一 主键关联映射(one-to-one)
- hibernate---一对一单向主键关联(不重要)
- Hibernate 第十讲 表关联关系(五)一对一联合主键关联
- Hibernate关联关系之一对一(主键关联)