首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DBUnit坚持对未指定的值插入null,但我希望使用DB默认值。

DBUnit坚持对未指定的值插入null,但我希望使用DB默认值。
EN

Stack Overflow用户
提问于 2018-06-15 15:04:46
回答 1查看 1.1K关注 0票数 2

DBUnit导致SQL错误时,我遇到了这个问题。假设我把这个放在我的dbunit testdata.xml文件中:

代码语言:javascript
运行
复制
<myschema.mytable id="1" value1="blah" value2="foo" />

我有一张这样的桌子(postgres)

myschema.mytable有一个id、value1、value2和一个日期字段,比如“lastmodified”。最后修改的列是带有修饰符“null now()”的时间戳。

看起来,dbunit读取表元数据,并试图为我的testdata.xml文件中未指定的任何列插入空。因此,上面的xml结果是这样的插入:

代码语言:javascript
运行
复制
insert into myschema.mytable (id,value1,value2,lastmodified) values (1,'blah','foo',null) 

在运行测试(dbunit/maven插件)时,我会得到如下错误:

代码语言:javascript
运行
复制
Error executing database operation: REFRESH: org.postgresql.util.PSQLException: ERROR: null value in column "lastmodified" violates not-null constraint

有什么方法可以告诉DBUnit不要在我没有指定的字段中插入空值?

编辑:使用dbunit 2.5.3,junit 4.12,postgressql驱动程序9.4.1208

EN

回答 1

Stack Overflow用户

发布于 2018-06-17 00:11:00

使用dbUnit“排除列”特性:如何在运行时排除某些表列?

在FilteredTableMetaData 2.1中引入的DbUnit类可以与IColumnFilter接口结合使用,以决定在运行时包含或排除表列。 新FilteredTableMetaData(originalTable.getTableMetaData(),FilteredTableMetaData MyColumnFilter();ITable filteredTable =新CompositeTable( metaData,originalTable);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50878231

复制
相关文章

相似问题

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