我试图升级我的Hibernate库的一些遗留代码和我突然收到在我的单元测试违反唯一约束:Dbunit升级给出了唯一的约束违规?
java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation; SYS_PK_10344 table: GROUP
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.execute(Unknown Source)
at org.dbunit.database.statement.SimplePreparedStatement.addBatch(SimplePreparedStatement.java:67)
at org.dbunit.database.statement.AutomaticPreparedBatchStatement.addBatch(AutomaticPreparedBatchStatement.java:57)
at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:178)
at gov.treas.fms.shared.test.spring.AbstractTransactionalSpringTest.loadDataset(AbstractTransactionalSpringTest.java:551)
... 21 more
Caused by: org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation; SYS_PK_10344 table: GROUP
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.Constraint.getException(Unknown Source)
at org.hsqldb.index.IndexAVLMemory.insert(Unknown Source)
at org.hsqldb.persist.RowStoreAVL.indexRow(Unknown Source)
at org.hsqldb.TransactionManager2PL.addInsertAction(Unknown Source)
at org.hsqldb.Session.addInsertAction(Unknown Source)
at org.hsqldb.Table.insertSingleRow(Unknown Source)
at org.hsqldb.StatementDML.insertSingleRow(Unknown Source)
at org.hsqldb.StatementInsert.getResult(Unknown Source)
at org.hsqldb.StatementDMQL.execute(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
... 27 more
新版本的库
休眠公地的注解:4.0.5 .Final
休眠-的EntityManager:4.3.10.Final 冬眠核:4.3.10.Final
冬眠-JPA-2.1-API:1.0.0.Final
HSQLDB 2.3.4
的DbUnit: 2.1
旧版本的库
冬眠的注解:3.4.0.GA
休眠公地的注解:3.1.0.GA
休眠-的EntityManager:3.4.0.GA
hibernate-核心:3.3.0.SP1
HSQLDB:1.8.0.7
的DbUnit:2.1
的实体是这样的:
@AttributeOverrides(
{
@AttributeOverride(name = "id", column = @Column(name = "group_id"))
}
)
public class Group extends AbstractIdentity {
private String description;
private String name;
//getters and setters
}
public abstract class AbstractIdentity {
private long id;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "IdSequenceGenerator")
public Long getId()
{
return id;
}
}
的DbUnit的数据集是这样的:
<dataset>
<group group_id="100"
description="Group description"
name="Group name"/>
</dataset>
它装有这样的:
IDataSet dataset = constructDbUnitDataset(datasetResourcePath);
DatabaseOperation.INSERT.execute(connection, dataset);
的DataOperation.INSERT线就是我得到的例外。
请注意,如果我运行一个单元测试,它会通过。如果我运行多个,我会得到上述例外。
任何帮助将不胜感激!