Jooq没有因失败而抛出异常

时间:2017-08-21 10:30:44

标签: java jooq

我正在使用 Jooq 将CSV数据填充到我的数据库中。 如果我提供 “字符串值” 而不是 Int 它没有将值输入到数据库中但是在平均值中时间它也没有抛出错误。 如何知道上传是否失败。如何处理这些类型的异常。另外,如果我尝试在int列中给出字符串,那么有没有办法检查/抛出警告。

版本:3.8.x

Connection connection = getConnection()
try(Connection connection = getConnection()) {
            DSLContext create = DSL.using(connection, SQLDialect.MYSQL);

            create.loadInto(Tables.PROCESS_QUEUE_MAP)
                    .loadCSV(new File("/my/folder/testInput.csv"))
                    .fields(Tables.PROCESS_QUEUE_MAP.PROCESS_QUEUE_ID,
                            Tables.PROCESS_QUEUE_MAP.PROCESS_NAME,
                            Tables.PROCESS_QUEUE_MAP.QUEUE_NAME,
                            Tables.PROCESS_QUEUE_MAP.MARKEPTLACE,
                            Tables.PROCESS_QUEUE_MAP.QUEUE_TYPE,
                            Tables.PROCESS_QUEUE_MAP.CREATED_BY,
                            Tables.PROCESS_QUEUE_MAP.CREATED_TIME,
                            Tables.PROCESS_QUEUE_MAP.LAST_MODIFIED_BY,
                            Tables.PROCESS_QUEUE_MAP.LAST_MODIFIED_TIME)
                    .execute();

        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

1 个答案:

答案 0 :(得分:0)

使用Loader API

进行常规故障处理

默认情况下,加载程序API会抛出从底层数据库或JDBC驱动程序引发的各种异常。可以通过指定:

来配置和覆盖它

这只会影响JDBC错误,而不会影响数据加载“错误”

jOOQ的自动转换

由于历史原因,在整个jOOQ API中,数据类型之间的自动转换是“宽松”而不是“快速失败”。所有数据类型转换都通过Convert实用程序,如果数据类型转换失败,它将返回null。例如。在致电Convert.convert(Object, Class)时,以下测试将通过:

assertNull(Convert.convert("abc", int.class));

这在过去一直受到批评,但由于向后兼容性,在jOOQ API中无法轻易更改。

解决方法包括: