我試圖升級我的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線就是我得到的例外。
請注意,如果我運行一個單元測試,它會通過。如果我運行多個,我會得到上述例外。
任何幫助將不勝感激!