Hibernate 연합 메 인 키
2596 단어 Hibernate 3 실천
예 를 들 어 Emp 는 id 와 name 두 개의 메 인 키 가 있 습 니 다. 예 를 들 어 다음 과 같 습 니 다.
package com.yy.hibernate.model;
import java.io.Serializable;
public class EmpCompositePK implements Serializable {
public int id;
public 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;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof EmpCompositePK){
EmpCompositePK pk = (EmpCompositePK)obj;
if(this.id==pk.getId()&&this.name.equals(pk.getName()))
return true;
}
return false;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}
Emp. 자바 에서 상기 결합 키 류 의 인용 을 가 져 야 합 니 다. 다음 과 같 습 니 다.private EmpCompositePK pk;
Emp. hbm. xml 설정 파일 에서 홈 키 는 다음 과 같이 정의 합 니 다.
연합 키 설정 이 완료 되 었 습 니 다.
다음은 Annotation 방식 으로 설정 합 니 다.
방식 1:
연합 키 클래스 에 @ Embeddable 주 해 를 사용 합 니 다:
package com.yy.hibernate.model;
import java.io.Serializable;
import javax.persistence.Embeddable;
@Embeddable
public class EmpCompositePK implements Serializable {
public int id;
public 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;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof EmpCompositePK){
EmpCompositePK pk = (EmpCompositePK)obj;
if(this.id==pk.getId()&&this.name.equals(pk.getName()))
return true;
}
return false;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
}
실체 적 으로 @ Id 사용private EmpCompositePK pk;
@Id
public EmpCompositePK getPk() {
return pk;
}
public void setPk(EmpCompositePK pk) {
this.pk = pk;
}
방식 2:실체 클래스 에서 다음 과 같은 주 해 를 직접 사용 합 니 다.
@EmbeddedId
public EmpCompositePK getPk() {
return pk;
}
방식 3:실체 에 다음 주 해 를 사용 합 니 다.
@IdClass(EmpCompositePK.class)
실체 류 의 id 와 name 의 getXXX 방법 에 @ Id 주 해 를 동시에 추가 합 니 다.메모: 홈 키 류 를 결합 하 는 것 이 필요 합 니 다.