JPA - @JoinColumn也可以成为@Id吗?发生SerializationException

时间:2010-05-13 14:13:33

标签: java jpa

我正在尝试使用@JoinColumn作为使用JPA的@Id,我收到了SerializationExceptions,“无法序列化。”

UserRole.java:

@Entity
@Table(name = "authorities")
public class UserRole implements Serializable {

 @Column(name = "authority")
 private String role;

 @Id
 @ManyToOne
 @JoinColumn(name = "username")
 private User owner;

        ...
}

User.java:

@Entity
@Table(name = "users")
public class User implements Serializable {

 @Id
 @GeneratedValue
 protected Long id;

 @Column(name = "username")
 protected String email;

 @OneToMany(mappedBy = "owner", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
 protected Set<UserRole> roles = new HashSet<UserRole>();

    ....

}

“username”在我的Users表中设置为唯一索引,但不作为主键。

有没有办法让“username”充当UserRole的ID?我不想在UserRole中引入数字键。我在这里完全失去了阴谋吗?

我正在使用MySQL和Hibernate。

1 个答案:

答案 0 :(得分:0)

这种映射确实没有意义。 ID必须是唯一的,但ManyToOne说“其中很多都有相同的用户。”