Hibernate(二) 组合主键映射

组合主键映射

 

 语法:

1.将主件类注解为@Embeddable,并将主键的属性注解为@Id

2.将主件的属性注解为@EmbeddedId

3.将类注解为@IdClass,并将该实体中所有属于主键的属性都注解为@Id

 

1

 

 

//主键类
package com.woxiaoe.study.hibernate;

import java.io.Serializable;

@Embeddable
public class StudentCard implements Serializable {
	private int idCard;
	private int classNo;
	public int getIdCard() {
		return idCard;
	}

	public void setIdCard(int idCard) {
		this.idCard = idCard;
	}

	public int getClassNo() {
		return classNo;
	}

	public void setClassNo(int classNo) {
		this.classNo = classNo;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + classNo;
		result = prime * result + idCard;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		StudentCard other = (StudentCard) obj;
		if (classNo != other.classNo)
			return false;
		if (idCard != other.idCard)
			return false;
		return true;
	}
	
	
	
	
	
}




 

 

//实体类
package com.woxiaoe.study.hibernate;

import java.math.BigInteger;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import org.hibernate.annotations.GenericGenerator;


@Entity
public class Student {
	private BigInteger id;
	private int age;
	private String name;
	private StudentCard studentCard;
	public BigInteger getId() {
		return id;
	}
	public void setId(BigInteger id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Id//j将主键类注解为@Id
	public StudentCard getStudentCard() {
		return studentCard;
	}
	public void setStudentCard(StudentCard studentCard) {
		this.studentCard = studentCard;
	}
	
	
	
	
	
}

 

2.去掉组件类的@Embeddable注解,在实体类中将其注解为@EmbeddedId

3.将类注解为@IdClass,并将该实体中所有属于主键的属性都注解为@Id

你可能感兴趣的:(Hibernate,J#)