您的位置:首页 > 其它

hibernate中的复合主键的映射

2011-12-26 13:55 155 查看
复合主键映射

使用<composite-id>节点来映射:

Ø 持久化类User:

package pojo;

import java.io.Serializable;

public class User implements Serializable {

private static final long serialVersionUID = 1L;

private String firstName;

private String lastName;

private int age;

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

Ø 映射配置User.hbm.xml:

<?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>

<class name="pojo.User" table="T_User">

<!-- 配置复合主键 -->

<composite-id>

<key-property name="firstName" column="firstName"

length="50" type="java.lang.String" />

<key-property name="lastName" column="lastName" length="50"

type="java.lang.String" />

</composite-id>

<property name="age" column="age" type="java.lang.Integer" />

</class>

</hibernate-mapping>

Ø 基于主键类的复合主键

持久化类:Users2.java

package pojo;

import java.io.Serializable;

public class User2 implements Serializable {

private UserPk userpk;

public UserPk getUserpk() {

return userpk;

}

public void setUserpk(UserPk userpk) {

this.userpk = userpk;

}

public int getAge() {

return age;

}

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

return super.equals(obj);

}

@Override

public int hashCode() {

// TODO Auto-generated method stub

return super.hashCode();

}

public void setAge(int age) {

this.age = age;

}

private int age;

}

主键类UserPk.java

package pojo;

import java.io.Serializable;

public class UserPk implements Serializable {

private String firstName;

private String lastName;

public String getFirstName() {

return firstName;

}

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

return super.equals(obj);

}

@Override

public int hashCode() {

// TODO Auto-generated method stub

return super.hashCode();

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

}

映射文件:User2.hbm.xml

<?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>

<class name="pojo.User2" table="T_User2">

<!-- 配置复合主键 -->

<composite-id name="userpk" class="pojo.UserPk">

<key-property name="firstName" column="firstName"

length="50" type="java.lang.String" />

<key-property name="lastName" column="lastName" length="50"

type="java.lang.String" />

</composite-id>

<property name="age" column="age" type="java.lang.Integer" />

</class>

</hibernate-mapping>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: