首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbUnit DbComparisonFailure expected:<uniqueidentifier>

DbUnit DbComparisonFailure expected:<uniqueidentifier>
EN

Stack Overflow用户
提问于 2017-12-04 11:13:55
回答 2查看 106关注 0票数 0

我们做数据库/数据集比较。

源DB: Server

目标DB: SAP HANA

错误消息

org.dbunit.assertion.DbComparisonFailure:不兼容的数据类型:(table=dataset,col=JobId) 预期:,但是:

工作:cast(JobId as varchar(36)) JobId

,但为什么会出现此错误呢? JobId定义为源表中的varchar(36)。

如何使此工作(生成SQL并手动添加强制转换非常麻烦)

EN

回答 2

Stack Overflow用户

发布于 2017-12-05 01:47:37

纵观谷歌的结果,这似乎是MS列类型的一个常见问题。见http://dbunit.wikidot.com/mssql

在那里,他们基本上将类型映射放在DBUnit工厂代码中,而不是对每一列进行强制转换:公共类MsSqlDataTypeFactory扩展了DefaultDataTypeFactory {公共静态instead = -9;公共静态instead= -11;

代码语言:javascript
复制
public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
{
    if (sqlType == NVARCHAR)
    {
        return DataType.VARCHAR;
    }

    if (sqlType == UNIQUEIDENTIFIER)
    {
        return DataType.VARCHAR;
    }

    return super.createDataType(sqlType, sqlTypeName);
 }
}
票数 2
EN

Stack Overflow用户

发布于 2017-12-05 13:33:00

感谢Lars Br的回答:

我提出了以下解决方案:

  1. 从类路径中删除DbUnit jar (版本2.5.4)
  2. 添加DbUnit源代码(也是2.4.5版)
  3. 编辑类org.dbunit.ext.mssql.MsSqlDataTypeFactory 方法public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException if(sqlType == Types.CHAR) { if =={返回新UniqueIdentifierType();} 至 (UniqueIdentifierType.UNIQUE_IDENTIFIER_TYPE.equals(sqlTypeName))不生成/*,因为它不匹配SAP (sqlType == Types.CHAR) { if {返回新UniqueIdentifierType();} }*/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47632068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档