我有两个实体:消息和用户。用户与消息具有多对多关系(一个用户可以拥有多条消息),并且消息(目前,为了使其不那么复杂)与用户具有多对多关系(一条消息可以发送给多个用户)。
我使用 @JoinTable 连接两个实体,但是,我想在连接表中添加一个“状态”列,以判断消息是否是新消息、已读消息等。我正在考虑将该列放入消息实体中,但是,我认为这可能是不可能的。
我看到这个问题的很多答案都说使用中介实体,但如果可能的话我想避免这种情况。
有人对我的问题有任何可能的解决方案吗?
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>();
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)