hibernate3学习笔记(十一)|复合主键2011-02-03新建数据库User:
1.CREATE TABLE user (
2.name VARCHAR(100) NOT NULL,
3.phone VARCHAR(50) NOT NULL,
4.age INT,
5.PRIMARY KEY(name, phone)
6.);
现将name和phone定义成复合主键。分别使用2种方法如下:方法1.复合主键字段直接包含在PO类中。User.java(需要实现Serializable接口,并定义equals()和hashCode()方法)
1.package com.hb3.pack_03.model;
2.
3.import java.io.Serializable;
4.import org.apache.commons.lang.builder.EqualsBuilder;
5.import org.apache.commons.lang.builder.HashCodeBuilder;
6.7.public class User implements Serializable {
8.9.private static final long serialVersionUID = -8377583111386512407L;
10.11.private String name;
12.private String phone;
13.private Integer age;
14.
15.public User() {
16.}
17.18.public Integer getAge() {
19.return age;
20.}
21.22.public void setAge(Integer age) {
23.this.age = age;
24.}
25.26.public String getName() {
27.return name;
28.}
29.30.public void setName(String name) {
31.this.name = name;
32.}
33.34.public String getPhone() {
35.return phone;
36.}
37.38.public void setPhone(String phone) {
39.this.phone = phone;
40.}
41.
42.public boolean equals(Object obj) {
43.if(obj == this) {
44.return true;
45.}
46.
47.if(!(obj instanceof User)) {
48.return false;
49.}
50.
51.User user = (User) obj;
52.return new EqualsBuilder()
53. .append(this.name, user.getName())
54. .append(this.phone, user.getPhone())
55. .isEquals();
56.}
57.
58.public int hashCode() {
59.return new HashCodeBuilder()
60. .append(this.name)
61. .append(this.phone)
62. .toHashCode();
63.}
64.}