Java &引用;“类”;数据库中的字段
我有一个数据库,其中包含一个名为“Class”的字段 我是这样询问乔克的Java &引用;“类”;数据库中的字段,java,jooq,Java,Jooq,我有一个数据库,其中包含一个名为“Class”的字段 我是这样询问乔克的 PlayersAppearance pp = getCtx().select(PLAYERS_APPEARANCE.RACE,PLAYERS_APPEARANCE.CLASS,PLAYERS_APPEARANCE.GENDER). from(PLAYERS_APPEARANCE).where(PLAYERS_APPEARANCE.ID.equal(id)).fetchInto(PlayersAppearance.c
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);
playerAppearance.class是由jooq生成的POJO。对于类字段,它在java中生成了Class\uu字段,我使用getClass\uu()方法访问它。命名类是为了避免与本机方法getClass()冲突,但它也会以某种方式中断数据库字段值
问题
playersappearance pa=pa.getClass_u2;()返回NPE
为什么?尝试使用
fetchInto(表)
而不是fetchInto(类)
:
也许Java生成器在字段名后面加了一个下划线,但是API依靠反射来完成它的工作,而且似乎没有指示它使用setClass_uuz()
作为CLASS
数据库列的setter
另一方面,这始终是最安全的选择,因为从数据库列到字段的映射是在代码生成时静态决定的(您可以自己检查),因此在运行时没有任何bean/属性/任何可能导致映射不起作用的事情发生
这可能是jOOQ中的一个错误(或缺少功能)-您应该提交一份记录单并等待支持团队。调试器屏幕中的每个字段都是空的,甚至id也是空的。您没有在allI从数据库中读取该记录只读3个字段,如查询中所示:种族、性别和类别。“类”字段只有一个空激活,然后查看发生了什么,日志显示正常处理,读取值而不是
。使用反射的fetchInto(PlayersAppearance.class)
尝试使用。fetchInto(PLAYERS\u外观)
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)