Java 存在约束冲突时继承实体的部分提交

Java 存在约束冲突时继承实体的部分提交,java,hibernate,jpa,spring-transactions,rollback,Java,Hibernate,Jpa,Spring Transactions,Rollback,我已经映射了三个JPA类,就像这样 @Entity @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "super_table") public abstract class SuperClass { @Id public Integer getId() { return id; } ... } @Entity @Table(name = "child_table_a") @PrimaryKeyJ

我已经映射了三个JPA类,就像这样

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "super_table")
public abstract class SuperClass {
  @Id
  public Integer getId() {
    return id;
  }
  ...
}

@Entity
@Table(name = "child_table_a")
@PrimaryKeyJoinColumn(name = "fk_id_super_table")
public class ChildA extends SuperClass {
  ...
  @Column(name = "serial_code", nullable = true, unique = true)
  public String getSerialCode() {
    return serialCode;
  }
  ...
}

@Entity
@Table(name = "child_table_b")
@PrimaryKeyJoinColumn(name = "fk_id_super_table")
public class ChildB extends SuperClass {
  ...
}
因此,有一种方法可以持久化对象。此方法由
@Transactional
注释进行注释。我的明显意图是避免坚持错误或不完全的事情

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public void salvar(SuperClass obj) {
    getEntityManager().persist(obj);
}
当对象正常时,该方法将正确执行。当方法尝试持久化对象
ChildA
时,如果超类的字段正常,但字段
serialCode
的表上存在一个值(唯一约束),则带注释的方法不会引发任何异常。当Spring框架尝试提交时,它抛出一个异常(关于数据库唯一约束)。但是,插入并提交了table
super\u table
的元组

有人能帮我解决这个问题吗

我正在使用: -Hibernate 4.0.1.1最终版本 -春季3.2.2
-JBoss AS 7.1

您是否启用了事务管理/配置了事务管理器?听起来很像每个语句都是自动提交的,这在没有事务管理器的情况下会发生。有关配置一个的更多详细信息,请参阅。@codemonkey,谢谢关注。实际上,我使用的是默认的JTA事务管理器。是否需要通过其他方式指定事务管理器?能否共享事务管理器的配置?是否已使用
@EnableTransactionManagement
为事务启用注释处理?