这是一个Hibernate/JPA问题。使用在表格中不唯一的Hibernate MapKey
我有一套Schedule
对象,每个对象包含各种StepType
的几个Step
s。每个StepType
在一个时间表内都是唯一的,因此这些步骤将存储为Map<StepType, Step>
。代码注释为:
@Entity
public class Schedule implements Serializable {
@MapKey(name="type")
@OneToMany(cascade=CascadeType.ALL, mappedBy="schedule")
private Map<StepType, Step> steps;
}
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"schedule", "type"})})
public class Step implements Serializable {
@ManyToOne
private StepType type;
@ManyToOne
private Schedule schedule;
}
不幸的是,这显然是不允许的。要求MapKey具有与其相关联的唯一性约束,其中type
不具有,因为步骤类型在特定的计划中是唯一的。
有没有更好的方法来注释这个结构,还是我将不得不重新考虑Hibernate的对象模型?或者这种违规行为应该是无害的? (该地图拒绝正确加载,但我无法确认这是为什么。)
我有同样的问题。这种方法是否适合你? – 2012-07-13 08:55:40