我写了以下代码:
@Entity
@Table(name="person")
@Inheritance(strategy=InheritanceType.JOINED)
public class Person {
private Long id;
protected String email;
private String firstName;
private String lastName;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
...
}
@Entity
@Table(name="users")
@ForeignKey(name="userPersonId")
public class User extends Person {
private String userName;
private String password;
private Date registrationDate;
private Set<? extends Person> contacts;
@OneToMany(targetEntity = com.blah.Person.class ,fetch = FetchType.LAZY, cascade=CascadeType.ALL)
@ForeignKey(name="contactId")
@JoinColumn(name="contactId")
public Set<? extends Person> getContacts() {
return contacts;
}
...
}
一个用户是一个人,一个用户可以有一组“人”(Person-s),它想保持联系。因此,我在这里拥有的是继承(用户派生 Person)和聚合关系(用户包含 Person-s)。
就数据库表而言,我希望有 3 个表:
- 人
- 用户
- 接触
联系人表包含用户表和人员表的外键。实际上,我只有以下两个表(个人和用户): alt text http://picasaweb.google.com/yaneeve.shekel/ProgrammingRelated#5338298839877393922
我想我的一些注释不正确......我做错了什么?