我尝试将hibernate 4.2.0升级到4.3.6,但schemaupdate任务失败,因为它生成了具有相同名称的重复外键。似乎以前版本的hibernate也生成了重复的外键,但我没有注意到它,因为它们有不同的名称。
问题在于以下(简化)类
@Entity
public class Relation
{
@ManyToOne(optional = false)
private Parent parent;
}
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Parent
{
}
@Entity
@DiscriminatorValue("child")
public class Child extends Parent
{
@OneToMany(mappedBy = "parent")
private List<Relation> relations
}
schemaupdate任务生成一个从父关系到子关系的外键。但它并没有意识到这是同一个外键。
我提出了三种可能的解决方案,但我希望有更好的解决方案。
有更好的方法吗?