2011-01-20 118 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

相关问题