我的实体:
@Entity
public class User implements Serializable {
@OneToMany(orphanRemoval=true,cascade=CascadeType.ALL)
@JoinColumn(name="_user_id")
@MapKey(name="quest")
private Map<String, ActiveQuest> activeQuests = Maps.createHash();
...
@Entity
@Table(uniqueConstraints=@UniqueConstraint(columnNames={"_user_id","quest"}))
public class ActiveQuest implements Serializable {
@ManyToOne(optional=false)
@JoinColumn(name="_user_id")
private User user;
@Column(nullable=false,updatable=false,length=50)
private String quest;
...
的文档@MapKey
说:
如果将主键以外的持久字段或属性用作映射键,则预计它具有与之关联的唯一性约束。
但是,如您所见, 的列没有唯一约束quest
,ActiveQuest
但组合 有一个_user_id, quest
。
这种用法正确吗?它似乎运作良好,但这是设计使然还是巧合?