039:hibernate:联合主键

来源:互联网 发布:python 在线教程 编辑:程序博客网 时间:2024/06/06 15:54

新建一个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;}}

对Wife.java

头文件加上:@Entity
                         @IdClass(WifePK.class)

对Id和name同时设@Id   ,表示两个同时为主键

 

package com.bjsxt.hibernate;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.IdClass;@Entity@IdClass(WifePK.class)public class Wife {private int id;private String name;private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Idpublic int getId() {return id;}public void setId(int id) {this.id = id;}@Idpublic String getName() {return name;}public void setName(String name) {this.name = name;}}


 

对Husband.java

只加一个@onetoone就可以了。他会自动命名

如果要自己命名则可以加上:

@JoinColumns(  {   @JoinColumn(name="wifeId", referencedColumnName="id"),   @JoinColumn(name="wifeName", referencedColumnName="name")  } )


即:

package com.bjsxt.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinColumns;import javax.persistence.OneToOne;@Entitypublic class Husband {private int id;private String name;private Wife wife;@Id@GeneratedValuepublic int getId() {return id;}public String getName() {return name;}@OneToOne@JoinColumns({@JoinColumn(name="wifeId", referencedColumnName="id"),@JoinColumn(name="wifeName", referencedColumnName="name")})public Wife getWife() {return wife;}public void setId(int id) {this.id = id;}public void setName(String name) {this.name = name;}public void setWife(Wife wife) {this.wife = wife;}}


 

 

0 0