Hibernate约束冲突/回滚错误
我在hibernate中遇到了一个奇怪的错误,很可能是由于不正确地使用了它,但是我想知道是否有任何方法可以找到它的根本原因,也许可以补救它 目前,我的类层次结构如下所示:Hibernate约束冲突/回滚错误,hibernate,constraints,rollback,Hibernate,Constraints,Rollback,我在hibernate中遇到了一个奇怪的错误,很可能是由于不正确地使用了它,但是我想知道是否有任何方法可以找到它的根本原因,也许可以补救它 目前,我的类层次结构如下所示: @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "tbl_class_a) public ClassA { ... private int propA; ... } @Entity @Table(name
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "tbl_class_a)
public ClassA {
...
private int propA;
...
}
@Entity
@Table(name = "tbl_class_b")
public ClassB extends ClassA {
...
@Column(unique = true)
private int propB;
...
}
@Entity
@Table(name = "tbl_class_c")
public ClassC extends ClassC {
...
private int propC;
...
}
我已经广泛地测试了所有三个类的对象的持久性和删除,并且在考虑属性的约束,特别是关于持久性的情况下,一切似乎都正常进行。p> 现在,我实例化了一个类C的对象newObj,它的propB值等于一个all ready持久化对象,而all ready的propB值就是all ready。我尝试将其持久化,正如预期的那样,将抛出一个约束冲突,并尝试回滚事务。我希望所有newObj的痕迹都会被清除,但是发生了一些非常奇怪的事情。C类和B类的表中对newObj的所有引用确实都被删除了,但A类的表中的属性仍然存在,而且据我所知是不可恢复的。为什么???
MySQL的MyISAM引擎 Hibernate按从父级到子级的顺序在“联接”层次结构中插入行。因此:没有事务意味着没有回滚,所以您最终得到的是表A中的行。您是否每次都使用MySQL/MyISAM?我使用的是MySQL 5.0.75。我不认为这是数据库的问题,而是映射器的问题。