【问题标题】:Loading Json as Column Type using Arquillian and Wildfly setup使用 Arquillian 和 Wildfly 设置加载 Json 作为列类型
【发布时间】:2016-08-24 15:32:07
【问题描述】:

我正在尝试使用 Arquillian 和 Wildfly 服务器将 json 加载到 Postgresql 中的 json 列类型。所以基本上我已经写了一个 InContainer 测试。

@Test
@UsingDataSet("datasets/contracts/contracts.yml")

public void FindContractByContractCodeAndUserId_ValidContractResponse() {

    ContractResponse contractResponse = contractBoundary.getContractByContractCodeAndUserId("0816QMCG", 1);
    assertThat(contractResponse, notNullValue());
    assertThat(contractResponse.getAmount(), is(800.0));
    assertThat(contractResponse.getDescription(), is("MacBook"));
    assertThat(contractResponse.getImageLink(), is("http://dasdas.de/"));
    assertThat(contractResponse.isShowOnMarketplace(), is(false));
    assertThat(contractResponse.getStatus(), is(ContractStatusEnum.PENDING));
}

yml 文件包含一个 json 类型的列,如下所示:

数据:{"data":{"newAmount":700.23}}

它自己的应用程序可以在postgresql中存储json类型。

现在我正在编写一个 InContainer 测试,它将数据加载到内存数据库 H2,但我检查了 H2 不支持 json,所以我转而使用 postgresql 并部署了 psql 驱动程序,但是当我运行时测试,我总是收到以下错误:

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 原因:org.dbunit.dataset.NoSuchColumnException:contract_events.DATA - ColumnNameToIndexes 缓存映射中的(非大写输入列:数据)。请注意,地图的列名不区分大小写。在 org.dbunit.dataset.AbstractTableMetaData.getColumnIndex(AbstractTableMetaData.java:117) 在

并且测试未能为数据库播种。 !!!!

【问题讨论】:

    标签: java json postgresql wildfly jboss-arquillian


    【解决方案1】:

    这意味着在后台使用的 DBUnit 找不到名为 DATA 的列。您是否为 dbunit 使用了正确的数据类型工厂?对于 Arquillian Persistence Extension,您可以在 arquillian.xml 中进行如下配置:

    <extension qualifier="persistence-dbunit">
        <property name="datatypeFactory">org.dbunit.ext.postgresql.PostgresqlDataTypeFactory</property>
    </extension>
    

    【讨论】:

    • 感谢您的回答,但这并没有帮助,据我了解,这使 arquillian(引擎盖下的数据库单元)基本上可以使用 postgresql 数据类型。我播种的列是 json 类型。是否可以说 dbUnit 不支持 json 类型用于播种。 ?如果有解决办法,那就休息一下吧。
    • 如果你能在 GH 上分享这个项目,我可以随意修改,在这里发送 PR 并为其他人发表评论:)
    • PostgresqlDataTypeFactory 不支持 jsonjsonb 类型。请参阅源代码以获取额外支持的类型列表。
    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 2014-07-29
    • 2014-09-22
    • 2016-09-27
    • 2014-03-18
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    相关资源
    最近更新 更多