Java dbUnit—如何定义不存在主键的位置,以使用表的所有列

Java dbUnit—如何定义不存在主键的位置,以使用表的所有列,java,hibernate,dbunit,Java,Hibernate,Dbunit,我对dbUnit的org.dbUnit.dataset.NoPrimaryKeyException有困难。我有一个类,比如说a,它有一个Set属性,其中B是一个enum。我使用Hibernate的hbm2ddl工具生成数据库模式,然后使用dbUnit填充数据库,以便进行DAO单元测试 我试图使用dbUnit xml填充我的数据库,但是当dbUnit试图删除我为表a\u B定义的条目时,我得到了一个org.dbUnit.dataset.NoPrimaryKeyException(由Hibernat

我对dbUnit的
org.dbUnit.dataset.NoPrimaryKeyException
有困难。我有一个类,比如说
a
,它有一个
Set
属性,其中
B
是一个
enum
。我使用Hibernate的
hbm2ddl
工具生成数据库模式,然后使用
dbUnit
填充数据库,以便进行DAO单元测试

我试图使用dbUnit xml填充我的数据库,但是当dbUnit试图删除我为表
a\u B
定义的条目时,我得到了一个
org.dbUnit.dataset.NoPrimaryKeyException
(由Hibernate自动生成)

我已经了解了针对以下问题提出的解决方案: ,但这要求我:

  • 为每个类定义一个
    id
    作为主键(我已经定义了不一定是数字的主键);或
  • accept
    方法中指定哪些主键用于哪些类
是否有任何方法可以指定应该使用默认主键,除非没有主键,在这种情况下,我们应该使用表中的所有列


(顺便说一句,我使用Hibernate和JPA注释使用与中所述类似的方法来持久化枚举)

感谢您的指导,但由于我使用的是枚举(表实际上是动态生成的-实际枚举本身没有对应的表),我不太确定我将如何实现这个解决方案?你能粘贴你的代码吗?帮助你会更容易。您是否使用@Enumerated?