這是一個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