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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值