【发布时间】:2014-11-06 06:13:22
【问题描述】:
因此考虑以下 2 个表格:
表:用户
id (pk)
...
和表 UserProfile:
UserProfile
user_id(pk, and fk from User.id. fk is named profile_user_fk)
...
鉴于这些表,我有实体类:
@Entity
@Table(name="User")
public class User implements Serializable {
private int id;
private UserProfile profile;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, unique = true)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@OneToOne(mappedBy = "user")
public UserProfile getProfie() {
return profile;
}
public void setProfile(UserProfile p) {
profile = p;
}
...
}
And the User class:
@Entity
@Table(name="UserProfile")
public class UserProfile implements Serializable {
private User user;
@OneToOne
@PrimaryKeyJoinColumn(name="profile_user_fk")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
...
}
我不想在 UserProfile 中添加额外的列,因为我认为该列没有意义。 User.id 应该足以表明 UserProfile 记录的身份。
所以我认为@OneToOne 注释会告诉休眠用户是一个 pk 也是 fk 并且应该引用 User.id 作为它自己的 id;但是执行代码显示:
org.hibernate.AnnotationException: No identifier specified for entity: xxx.UserProfile
显然我认为是错误的 - 但我不知道我可以做些什么来在不改变架构的情况下修复它。
请提供任何帮助。谢谢!
【问题讨论】:
-
错误本身说
org.hibernate.AnnotationException: No identifier specified for entity: xxx.UserProfile你需要在UserProfile类中添加主键列。