"class" 数据库中的字段
"class" field in database
我有一个包含 table PLAYERS_APPEARANCE 的数据库,其中有一个名为 "Class".
的字段
我正在使用 jooq 查询
PlayersAppearance pp = getCtx().select(PLAYERS_APPEARANCE.RACE,PLAYERS_APPEARANCE.CLASS,PLAYERS_APPEARANCE.GENDER).
from(PLAYERS_APPEARANCE).where(PLAYERS_APPEARANCE.ID.equal(id)).fetchInto(PlayersAppearance.class).get(0);
PlayersAppearance.class是jooq生成的POJO。对于 Class 字段,它在 java 中生成了 class_ 字段,我使用 getClass_()[=30= 访问它] 方法。 class_ 的命名是为了避免与本地方法getClass()冲突,但它也以某种方式破坏了数据库字段值
问题
PlayersApperance pa = pa.getClass_() returns NPE
Debugger image: As you can see in the debugger class_ is null
为什么?
尝试使用 fetchInto(Table)
而不是 fetchInto(Class)
:
PlayersAppearance pa = ctx
.select(PLAYERS_APPEARANCE.RACE
, PLAYERS_APPEARANCE.CLASS
, PLAYERS_APPEARANCE.GENDER)
.from(PLAYERS_APPEARANCE)
.where(PLAYERS_APPEARANCE.ID.eq(id))
.fetchInto(PLAYERS_APPEARANCE)
也许 Java 生成器在字段名称后附加了下划线,但是 fetchInto(Class)
API 依赖于反射来完成它的工作,而且它似乎没有被指示使用 setClass_()
作为 CLASS
数据库列的 setter。
另一方面,fetchInto(Table)
始终是最安全的选择,因为从数据库列到字段的映射是在代码生成时静态决定的(您可以自己检查),所以没有bean/property/whatever在运行时发生,这会使映射无法正常工作。
这可能是 jOOQ 中的错误(或缺失的功能)- 您应该提交工单并等待支持团队。
我有一个包含 table PLAYERS_APPEARANCE 的数据库,其中有一个名为 "Class".
的字段我正在使用 jooq 查询
PlayersAppearance pp = getCtx().select(PLAYERS_APPEARANCE.RACE,PLAYERS_APPEARANCE.CLASS,PLAYERS_APPEARANCE.GENDER).
from(PLAYERS_APPEARANCE).where(PLAYERS_APPEARANCE.ID.equal(id)).fetchInto(PlayersAppearance.class).get(0);
PlayersAppearance.class是jooq生成的POJO。对于 Class 字段,它在 java 中生成了 class_ 字段,我使用 getClass_()[=30= 访问它] 方法。 class_ 的命名是为了避免与本地方法getClass()冲突,但它也以某种方式破坏了数据库字段值
问题
PlayersApperance pa = pa.getClass_() returns NPE
Debugger image: As you can see in the debugger class_ is null
为什么?
尝试使用 fetchInto(Table)
而不是 fetchInto(Class)
:
PlayersAppearance pa = ctx
.select(PLAYERS_APPEARANCE.RACE
, PLAYERS_APPEARANCE.CLASS
, PLAYERS_APPEARANCE.GENDER)
.from(PLAYERS_APPEARANCE)
.where(PLAYERS_APPEARANCE.ID.eq(id))
.fetchInto(PLAYERS_APPEARANCE)
也许 Java 生成器在字段名称后附加了下划线,但是 fetchInto(Class)
API 依赖于反射来完成它的工作,而且它似乎没有被指示使用 setClass_()
作为 CLASS
数据库列的 setter。
另一方面,fetchInto(Table)
始终是最安全的选择,因为从数据库列到字段的映射是在代码生成时静态决定的(您可以自己检查),所以没有bean/property/whatever在运行时发生,这会使映射无法正常工作。
这可能是 jOOQ 中的错误(或缺失的功能)- 您应该提交工单并等待支持团队。