2017-08-11 25 views
0

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

エンティティは次のようになります。

私は例外を取得していますどこDataOperation.INSERTラインがある

IDataSet dataset = constructDbUnitDataset(datasetResourcePath); 
DatabaseOperation.INSERT.execute(connection, dataset); 

<dataset> 
    <group group_id="100" 
     description="Group description" 
     name="Group name"/> 
</dataset> 

次のようにロードされている:

@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をデータセットには、次のようになります。

私が1つの単体テストを実行すると、それは合格することに注意してください。複数を実行すると、上記の例外が発生します。

ご協力いただければ幸いです!

答えて

0

以前のHibernateバージョンのDDL genと新しいものを比較すると、異なる制約が見つかることがあります。

以前のテストでは、データがDBに残ることがあります。問題を示す2つのテストを実行し、最初のテストの後にデータを表示して、すべてのテーブルがクリーンアップされていることを確認します。

関連する問題