Java jOOQ子查询给出编译错误;类型SelectWhereStep…中的方法where(条件…)不适用于参数
我在子查询的.where上收到以下编译器错误(.where(parentHelp.SUBJECT\u ID=IFS\u HELP.PARENT\u SUBJECT\u ID)): 类型SelectWhereStep中的方法where(条件…)不适用于参数(TableField) 当我有以下jOOQ子查询代码时: 这是我正在尝试执行的查询:Java jOOQ子查询给出编译错误;类型SelectWhereStep…中的方法where(条件…)不适用于参数,java,mysql,sql,jooq,Java,Mysql,Sql,Jooq,我在子查询的.where上收到以下编译器错误(.where(parentHelp.SUBJECT\u ID=IFS\u HELP.PARENT\u SUBJECT\u ID)): 类型SelectWhereStep中的方法where(条件…)不适用于参数(TableField) 当我有以下jOOQ子查询代码时: 这是我正在尝试执行的查询: 这是一个简单的打字错误。如果在像jOOQ这样的内部DSL中可以实现以下功能,那就太好了: .where(parentHelp.SUBJECT\u ID=IFS
这是一个简单的打字错误。如果在像jOOQ这样的内部DSL中可以实现以下功能,那就太好了:
.where(parentHelp.SUBJECT\u ID=IFS\u HELP.PARENT\u SUBJECT\u ID)
//^赋值运算符的重定义语义
但事实并非如此。不能在Java中重新定义赋值运算符的语义。因此,您必须使用or方法:
.where(parentHelp.SUBJECT\u ID.eq(IFS\u HELP.PARENT\u SUBJECT\u ID))
这是一个简单的打字错误。如果在像jOOQ这样的内部DSL中可以实现以下功能,那就太好了:
.where(parentHelp.SUBJECT\u ID=IFS\u HELP.PARENT\u SUBJECT\u ID)
//^赋值运算符的重定义语义
但事实并非如此。不能在Java中重新定义赋值运算符的语义。因此,您必须使用or方法:
.where(parentHelp.SUBJECT\u ID.eq(IFS\u HELP.PARENT\u SUBJECT\u ID))
完美-谢谢!我一定盯着它看了两个小时,它就在那里。感谢您的快速回答!太好了-谢谢!我一定盯着它看了两个小时,它就在那里。感谢您的快速回答!对于将来查看此示例的任何人,我的子查询中也有一个输入错误。我应该在select中使用别名。字段parent\u help\u subject=sqlca.select(parent\u help\u subject.subject\u NAME).from(parentHelp.subject\u ID=IFS\u help.parent\u subject\u ID).asField(“parent\u help\u subject”);对于将来查看此示例的任何人,我的子查询中也有一个输入错误。我应该在select中使用别名。字段parent\u help\u subject=sqlca.select(parent\u help\u subject.subject\u NAME).from(parentHelp.subject\u ID=IFS\u help.parent\u subject\u ID).asField(“parent\u help\u subject”);
IfsHelp parentHelp = IFS_HELP.as( "parentHelp" );
Field<Object> parent_help_subject = sqlca .select( IFS_HELP.SUBJECT_NAME )
.from( parentHelp )
.where( parentHelp.SUBJECT_ID = IFS_HELP.PARENT_SUBJECT_ID )
.asField( "parent_help_subject" );
results = sqlca .select( IFS_HELP.SUBJECT_NAME, IFS_HELP.SUBJECT_ID, parent_help_subject )
.from( IFS_HELP )
.where( IFS_HELP.HELP_TEXT.like( argument ) )
.and( IFS_HELP.DISPLAY.equal( "Y" ) )
.orderBy( IFS_HELP.SUBJECT_NAME.asc() )
.limit( 50 )
.fetch();
IFS_HELP
SUBJECT_ID (bigint, pk)
SUBJECT_NAME (varchar)
PARENT_SUBJECT_ID (bigint, fk back to ifs_help.subject_id)
HELP_TEXT (varchar)
DISPLAY (char)
SELECT ifs_help.subject_name,
ifs_help.subject_id,
ifs_isNull( ( select subject_name from ifs_help P where P.subject_id = ifs_help.parent_subject_id ), '' ) as parent_help_subject
FROM ifs_help
WHERE ifs_help.help_text like argument
AND ifs_help.display = 'Y'
ORDER BY ifs_help.subject_name ASC
LIMIT 50