我有两个实体,Message和User。用户与Message有一个ManyToMany关系(用户可以有很多消息)和Message(现在,为了使它不那么复杂)与User有一个ManyToMany关系(一条消息可以发送给多个用户)。
我正在使用@JoinTable加入这两个实体,但是,我想在连接表中添加一个“status”列来判断该消息是否是新的,读取等。我正在考虑将列放入但是,消息实体,我认为这可能是不可能的。
我已经看到很多关于这个问题的答案说要使用中间实体,但我想尽可能避免这种情况。
有没有人可以解决我的问题?
答案 0 :(得分:4)
JPA 2.0(即Hibernate 3.5及更高版本)引入了对三元关系建模的支持Map
。例如,您可以执行类似的操作(但如果您需要双向关系,我不确定如何处理另一方):
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>();
...
}