java - 获取列名包含大写字符的表的主键时,Jooq 的值无效

标签 java sql sqlite primary-key jooq

给出 Sqlite 中的下表:

CREATE TABLE author (
    idOfAuthor   INTEGER (10) PRIMARY KEY,
    name TEXT (255) 
);

方法table.getPrimaryKey()返回一个包含一个空元素的数组。将列名称“idOfAuthor”更改为“id_of_author”后,它会按预期返回。

也许org.jooq.impl.Fields类中的field(String name)方法应该使用equalsIgnoreCase而不仅仅是equals

最佳答案

我怀疑您正在使用Xerial JDBC driver ,这意味着您在这里遇到了这个问题:

https://bitbucket.org/xerial/sqlite-jdbc/issues/167/databasemetadatagetprimarykeys-reports

Xerial JDBC 驱动程序中存在错误,报告 DatabaseMetaData.getPrimaryKeys()全部为小写字符的列。这不会从 jOOQ 的 Table.getPrimaryKey() 生成主键列打电话。

jOOQ 的 org.jooq.Meta使用 JDBC DatabaseMetaData在幕后,因此间接遭受这个问题,这也可以被视为一个错误( #5097 ),应该很快修复。

关于java - 获取列名包含大写字符的表的主键时,Jooq 的值无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35430607/

相关文章:

java - 如何修复在另一个类中修改的私有(private)列表

mysql - 将每组的总和除以总计

c# - SQLite 1.0.65 程序集绑定(bind)错误

c++ - 如果我为多个编写器使用额外的互斥锁,我可以在 SQLite3 中使用 WAL 模式吗?

java - 存储/恢复用于在 Java 中解密字符串的加密 key 的简便方法

java - 使用 IntelliJ 开发 Eclipse RCP

mysql - 一个 PHP 查询中的 2 个 MySQL SELECT 语句

sql - 在启动时导入 PostgreSQL 触发器。 hibernate

c - 用C程序访问sqlite

java - 突然maven无法编译