给出 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/