一个简单的复合主键的做关联类的例子
场景是这样的:
用户类 User,物品类 Goods,每次记录用户使用物品的情况,情况包括谁在什么时间借了什么物品。
其中有一个约束条件就是用户只能对同一物品使用一次。使用记录类为 Record 类。我们可以看出
User 对 Record 是 1:n 多的关系,Record 对 Goods 是 n:1 的关系,而 User 和 Goods 之间没有之间的
关系。
RecordId 类是复合主键类,分别以 n:1 关联 User 类,n:1 关联 Goods 类。RecordId 类需要实现
equals 方法,需要实现 Serializable。而 Record 类用 RecordId 来做主键。
类定义如下:
java 代码:
package com.javaeye;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;
public class User {
private Long id;
private String name;
private Set usingRecords = new HashSet();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getUsingRecords() {
return usingRecords;
}
public void setUsingRecords(Set usingRecords) {
this.usingRecords = usingRecords;
}
public void useGoods(Goods goods) {
RecordId id = new RecordId();
id.setUser(this);
id.setGoods(goods);
Record record = new Record();
record.setRecordId(id);
record.setRecordTime(Calendar.getInstance());