我正在尝试使用@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。
答案 0 :(得分:0)
这种映射确实没有意义。 ID必须是唯一的,但ManyToOne说“其中很多都有相同的用户。”