org.dbunit.database.AmbiguousTableNameException

org.dbunit.database.AmbiguousTableNameException

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <employee name = "abc" empId = "100" location = "goa" dept = "IT" />
        <facilities transport="Y" mealcard = "" driver = "Y"/>
        <reportees manager = "XXX" lead = "XXX" VP = "XXX"/>
    <employee name = "XYZ" empId = "101" location = "mombai" dept = "IT" />
        <facilities transport="Y" mealcard = "" driver = "Y"/>
        <reportees manager = "XXX" lead = "XXX" VP = "XXX"/>
    <employee name = "PQA" empId = "102" location = "delhi" dept = "IT" />
        <facilities transport="Y" mealcard = "" driver = "Y"/>
        <reportees manager = "XXX" lead = "XXX" VP = "XXX"/>

以上是我的XML。我必须验证相同。我正在使用 DBUnit 将相同的 XML 与其他 XML 进行比较(其他 XML 具有相同的内容,但从不同的来源生成)。在创建数据集时,我得到 "org.dbunit.database.AmbiguousTableNameException".

我 SQL 查询了每个 XML 标签。例如。对于员工标签,我正在查询 empID。对于我在 mealCard 等上查询的设施,我正在遍历 XML 标签。第一次迭代没有错误。我正在使用 QueryDataSet.addTable(table_name ,query) 添加表格,即 xml 标签。但是当下一次迭代到来时,我再次尝试添加员工标签时,出现了上述错误。

配置架构名称,以便 dbUnit 知道要使用哪个。参见 Why am I getting an "AmbiguousTableNameException"?

我解决了这个问题。我会告诉你怎么做。在重复标签的数据集中,我只是添加了随机数,例如在我上面的 XML 员工正在重复标记因此我在数据集中的第一个实例添加了 employee_123 为下一个实例添加了 employee_098 这就是我设法摆脱 AmbigiousTableNameException 的方法。后来我使用 RegEx 删除附加到员工标签的“_[randomNumber]”。代码 运行 成功。

@DBUnit(qualifiedTableNames = true)

这个设置对我有帮助