Hibernate 使用';它在一个表中不是唯一的
这是一个Hibernate/JPA问题 我有一组Hibernate 使用';它在一个表中不是唯一的,hibernate,jpa,Hibernate,Jpa,这是一个Hibernate/JPA问题 我有一组Schedule对象,每个对象包括多个Steps不同的StepTypes。每个StepType在计划中都是唯一的,因此这些步骤存储为映射。代码注释为: @Entity public class Schedule implements Serializable { @MapKey(name="type") @OneToMany(cascade=CascadeType.ALL, mappedBy="schedule") priv
Schedule
对象,每个对象包括多个Step
s不同的StepType
s。每个StepType
在计划中都是唯一的,因此这些步骤存储为映射
。代码注释为:
@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;
}
@实体
公共类调度实现了可序列化{
@映射键(name=“type”)
@OneToMany(cascade=CascadeType.ALL,mappedBy=“schedule”)
私有映射步骤;
}
@实体
@表(uniqueConstraints={@UniqueConstraint(columnNames={“schedule”,“type”})})
公共类步骤实现可序列化{
@许多酮
私有阶梯型;
@许多酮
私人时间表;
}
不幸的是,这显然是不允许的。A需要具有与之关联的唯一性约束,而类型
没有,因为步骤类型仅在特定计划中是唯一的
有没有更好的方法来注释这个结构,或者为了Hibernate,我必须重新考虑对象模型?或者这种违反行为应该是无害的?(地图拒绝正确加载,但我无法确定这是为什么。)根据规范,您是对的,唯一性是必需的。但在我(和你)看来,只要求“本地化的独特性”似乎是合乎逻辑的。 我刚刚发现“Pro JPA 2”一书中的表述是相同的:“不需要在这个实体类型的整个域中都是唯一的。它只需要在关系的范围内是唯一的” 我需要和你一样的行为。我将很快测试代码 以下是本书摘录的链接:
我也有同样的问题。这个方法对你有用吗?