hibenate 복합 메 인 키
예:
(1) person 표를 만 들 고 메 인 키 는 name 과 phone 입 니 다.
create table person(
name varchar2(30) not null,
phone varchar2(20) not null,
age number(30),
primary key(name,phone)
)
(2) 새 키 클래스 Primary Key. 자바 (Serializable 인 터 페 이 스 를 실현 하고 equals 와 hashcode 를 복사 하 는 것 을 주의 하 십시오)
public class PrimaryKey implements Serializable{
private String name;
private String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public boolean equals(Object obj) {
if(obj == null){
return false;
}else if(! (obj instanceof CompositePerson)){
return false;
}
PrimaryKey pk = (PrimaryKey)obj;
new EqualsBuilder().append(this.name, pk.getName()).append(this.phone,pk.getPhone())
.isEquals();
return true;
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(this.name).append(this.phone)
.toHashCode();
}
}
(3) 새 person 표 에 대응 하 는 pojo (Person. 자바)
public class Person {
private PrimaryKey primaryKey;
private int age;
public PrimaryKey getPrimaryKey() {
return primaryKey;
}
public void setPrimaryKey(PrimaryKey primaryKey) {
this.primaryKey = primaryKey;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
(4) Person. hbm. xml 파일 설정 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package=" ">
<class name="Person" table="Person">
<composite-id name="primaryKey" class="PrimaryKey">
<key-property name="name" column="name" type="string"/>
<key-property name="phone" column="phone"/>
</composite-id>
<property name="age" column="age" type="int"/>
</class>
</hibernate-mapping>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.