XML配置方法
1.新建一个用于存放联合主键的类.
2.配置映射文件
Annotation配置的第一种方法
1.新建一个存放主键的类.并声明这个类为@Embeddable
2.在domain类中的get存放主键类的方法上,注解为@Id
Annotation配置的第二种方法
在domain类中的get存放主键类的方法上,注解为@EmbeddedId
Annotation配置的第三种方法(最适合开发习惯)
1.新建一个存放主键的类
2.在domain类中的主键get方法上,注解为Id(有几个注解几个)
3.注解这个类为@IdClass(com.meiyoudao.domain.PersonPK.class)指定主键类
1.新建一个用于存放联合主键的类.
2.配置映射文件
- //新增存放联合主键的类.
- //需要实现序列化接口,覆盖hashCode和equals方法
- package com.meiyoudao.domain;
- import java.io.Serializable;
- /**
- *
- * @author meiyoudao
- *
- */
- public class PersonPK implements Serializable{
- private String name;
- private int id;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- //需要覆盖hashCode 和 equals方法
- @Override
- public int hashCode() {
- StringBuffer strb = new StringBuffer();
- //返回联合主键的hashcode码
- //在map数组中能区分
- return strb.append(id).append(name).hashCode();
- }
- @Override
- public boolean equals(Object obj) {
- if(obj instanceof PersonPK){
- PersonPK o = (PersonPK)obj;
- if(o.id == this.id && o.name.equals(this.name)){
- return true;
- }
- }
- return false;
- }
- }
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.meiyoudao.domain">
- <class name="Person">
- <composite-id name="personPK" class="PersonPK">
- <key-property name="id"></key-property>
- <key-property name="name"></key-property>
- </composite-id>
- <property name="weight"/>
- </class>
- </hibernate-mapping>
Annotation配置的第一种方法
1.新建一个存放主键的类.并声明这个类为@Embeddable
2.在domain类中的get存放主键类的方法上,注解为@Id
- package com.meiyoudao.domain;
- import java.io.Serializable;
- import javax.persistence.Embeddable;
- /**
- *
- * @author meiyoudao
- *
- */
- @Embeddable//可以被嵌入的
- public class PersonPK implements Serializable{
- private String name;
- private int id;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- //需要覆盖hashCode 和 equals方法
- @Override
- public int hashCode() {
- StringBuffer strb = new StringBuffer();
- //返回联合主键的hashcode码
- //在map数组中能区分
- return strb.append(id).append(name).hashCode();
- }
- @Override
- public boolean equals(Object obj) {
- if(obj instanceof PersonPK){
- PersonPK o = (PersonPK)obj;
- if(o.id == this.id && o.name.equals(this.name)){
- return true;
- }
- }
- return false;
- }
- }
- package com.meiyoudao.domain;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import javax.persistence.TableGenerator;
- @Entity
- public class PersonAnno {
- private String weight;
- private PersonPK personPK;
- @Id
- public PersonPK getPersonPK() {
- return personPK;
- }
- public void setPersonPK(PersonPK personPK) {
- this.personPK = personPK;
- }
- public String getWeight() {
- return weight;
- }
- public void setWeight(String weight) {
- this.weight = weight;
- }
- }
Annotation配置的第二种方法
在domain类中的get存放主键类的方法上,注解为@EmbeddedId
- package com.meiyoudao.domain;
- import javax.persistence.EmbeddedId;
- import javax.persistence.Entity;
- import javax.persistence.TableGenerator;
- @Entity
- public class PersonAnno {
- private String weight;
- private PersonPK personPK;
- @EmbeddedId
- public PersonPK getPersonPK() {
- return personPK;
- }
- public void setPersonPK(PersonPK personPK) {
- this.personPK = personPK;
- }
- public String getWeight() {
- return weight;
- }
- public void setWeight(String weight) {
- this.weight = weight;
- }
- }
Annotation配置的第三种方法(最适合开发习惯)
1.新建一个存放主键的类
2.在domain类中的主键get方法上,注解为Id(有几个注解几个)
3.注解这个类为@IdClass(com.meiyoudao.domain.PersonPK.class)指定主键类
- package com.meiyoudao.domain;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import javax.persistence.IdClass;
- @Entity
- @IdClass(com.meiyoudao.domain.PersonPK.class)
- public class PersonAnno {
- private int id;
- private String name;
- private String weight;
- @Id
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- @Id
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getWeight() {
- return weight;
- }
- public void setWeight(String weight) {
- this.weight = weight;
- }
- }
感谢分享:http://meiyoudao.iteye.com/blog/777091