设为首页 加入收藏

TOP

Hibernate――ORMapping(三)
2015-07-24 11:34:32 来源: 作者: 【 】 浏览:20
Tags:Hibernate ORMapping
age) { this.age = age; } }

?

?

Wife类的联合主键类WifePK.java

package com.bjsxt.hibernate;



import java.io.Serializable;







public class WifePK implements Serializable {

private int id;

private String name;





public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}



}





Huaband.java

package com.zgy.hibernate.model;



import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.JoinColumns;

import javax.persistence.OneToOne;



@Entity

public class Husband {

private int id;

private String name;

private Wife wife;

@Id

@GeneratedValue

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@OneToOne

@JoinColumns(

{

@JoinColumn(name="wifeId",referencedColumnName="id"),

@JoinColumn(name="wifeName",referencedColumnName="name")

}

)

public Wife getWife() {

return wife;

}

public void setWife(Wife wife) {

this.wife = wife;

}



}

?

观察结果:

1.在husband.java中,只使用@OneToOne,则会在husband表中自动生成wife_id ,wife_name两个字段。show create table husband;

CREATE TABLE `husband` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

`wife_id` int(11) DEFAULT NULL,

`wife_name` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `FK_4565w2c4f1cj082spdiok0w6` (`wife_id`),

CONSTRAINT `FK_4565w2c4f1cj082spdiok0w6` FOREIGN KEY (`wife_id`) REFERENCES `wife` (`id`)

)

2.使用@JoinColumns(

{

@JoinColumn(name="wifeId",referencedColumnName="id"),

@JoinColumn(name="wifeName",referencedColumnName="name")

}

)

可以自定义husband表中关联联合主键的列的名称

?

?

2.加入以上Annotation之后,再观察结果show create table husband;

CREATE TABLE `husband` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

`wifeId` int(11) DEFAULT NULL,

`wifeName` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `FK_sdshifqwgidsm93jdh5kfl0e4` (`wifeId`,`wifeName`),

CONSTRAINT `FK_sdshifqwgidsm93jdh5kfl0e4` FOREIGN KEY (`wifeId`, `wifeName`) REFERENCES `wife` (`id`, `name`)

)

?

第六种:组建映射

一、Annotation配置

1.不将wife.java作为实体类

2.在husband.java中,使用组件映射,关联wife.java中的wifeName和age

范例:

Wife.java中,不将wife作为是实体类

package com.zgy.hibernate.model;



import java.io.Serializable;



import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.IdClass;

import javax.persistence.OneToOne;

import javax.persistence.PrimaryKeyJoinColumn;





public class Wife {

private String wifeName;

private int age;





public String getWifeName() {

return wifeName;

}



public void setWifeName(String wifeName) {

this.wifeName = wifeName;

}



public int getAge() {

return age;

}
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇函数 下一篇jdbc自己理解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)
·请问微信4.0版本xwec (2025-12-24 22:48:42)
·电脑NVIDIA的文件夹 (2025-12-24 22:48:40)
·如何看待微信新版本 (2025-12-24 22:48:37)