2011-01-20 117 views
3

我有兩個實體,消息和用戶。用戶與消息具有ManyToMany關係(用戶可以有很多消息),消息(現在爲了減少複雜性)與用戶具有ManyToMany關係(消息可以發送給多個用戶)。將額外的屬性添加到休眠JoinTable

我加入使用@JoinTable兩個實體,但是,我想一個「狀態」列添加到連接表告訴我們,如果消息是新的,閱讀等,我想放列在Message實體,但是,我認爲這可能是不可能的。

我見過很多這個問題的答案,說使用中介實體,但我想避免這種情況,如果可能的話。

有沒有人有任何可能的解決方案,我的問題?

回答

4

JPA 2.0(即Hibernate 3.5及更高版本)引入了對建模三元關係的支持,如Map s。例如,你可以做這樣的事情(雖然我不知道與對方做什麼,如果你需要一個雙向的關係):

public enum MessageStatus { READ, UNREAD } 

public class User { 
    ... 

    @ElementCollection 
    @CollectionTable(name = "MessagesToUsers", joinColumns = @JoinColumn(name = "userId")) 
    @Column(name = "messageStatus") 
    @MapKeyJoinColumn(name = "messageId") 
    private Map<Message, MessageStatus> messages = new HashMap<Message, MessageStatus>(); 

    ... 
} 
+0

能以這樣的方式註釋字段標準查詢中使用? – 2013-07-09 20:31:34

相關問題