2010-05-13 67 views
0

我想使用@JoinColumn作爲@Id使用JPA,我得到SerializationExceptions,「無法序列化」。JPA - @JoinColumn是否也可以是@Id? SerializationException發生

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」充當UserRole的ID嗎?我不想在UserRole中引入數字鍵。我完全在這裏失去了陰謀嗎?

我在引擎蓋下使用MySQL和Hibernate。

回答

0

這種映射並沒有什麼意義。 ID必須是唯一的,但ManyToOne說'很多這些用戶都是一樣的'。

+0

當然,你是對的。而我是個白癡! – Shivago 2010-05-13 16:46:24