Java &引用;“类”;数据库中的字段

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

我有一个数据库,其中包含一个名为“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.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)