java - Jooq 不会因失败而引发异常

标签 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();
        }
    }

最佳答案

使用 Loader API 进行常规故障处理

默认情况下,加载器 API 会引发底层数据库或 JDBC 驱动程序引发的各种异常。这可以通过指定来配置和覆盖:

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

jOOQ的自动转换

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

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

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

解决方法包括:

关于java - Jooq 不会因失败而引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794860/

相关文章:

java - 如何使用JfreeChart设置Y轴的范围?

java - JOOQ MockDataProvider - 如何根据某些条件返回不同的模拟?

mysql - 如何在 jOOQ 的同一张表上写 LEFT OUTER JOIN?

Java - Future.get() 多次调用

java - 使用元数据在 mysql 中插入查询

java - 如何使用 PCF 将 QueueManager 作为部分存储库添加到集群?

java - 在 GitHub 上公开时隐藏字符串 <property name ="password"value ="***"/>?

postgresql - 如何在 JOOQ 中为 PostgreSQL 编写正确的 bool 比较

postgresql - 带有普通 SQL 的 JOOQ EXISTS 子句

java - 将字符串映射到枚举 jooq