我将jOOQ安装到eclipse中,为mySQL生成了类,但是在编写一些基本查询时仍然遇到问题。
我试图通过返回生成的键来组成插入查询,但是编译器抛出错误
表:tblCategory列:category_id,parent_id,名称,rem,uipos
Result<TblcategoryRecord> result= create.insertInto(Tblcategory.TBLCATEGORY, Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS) .values(node.getParentid()) .values(node.getName()) .values(node.getRem()) .values(node.getUipos()) .returning(Tblcategory.CATEGORY_ID) .fetch();
还尝试了其他不同的方法如何正确地做到这一点?
谢谢charis
您使用的语法用于插入多个记录。这将插入4条记录,每条记录只有一个字段。
.values(node.getParentid()) .values(node.getName()) .values(node.getRem()) .values(node.getUipos())
但是您声明了4个字段,所以这行不通:
create.insertInto(Tblcategory.TBLCATEGORY, Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS)
您可能想做的是:
Result<TblcategoryRecord> result = create .insertInto(Tblcategory.TBLCATEGORY, Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS) .values(node.getParentid(), node.getName(), node.getRem(), node.getUipos()) .returning(Tblcategory.CATEGORY_ID) .fetch();
或者:
Result<TblcategoryRecord> result = create .insertInto(Tblcategory.TBLCATEGORY) .set(Tblcategory.PARENT_ID, node.getParentid()) .set(Tblcategory.NAME, node.getName()) .set(Tblcategory.REM, node.getRem()) .set(Tblcategory.UIPOS, node.getUipos()) .returning(Tblcategory.CATEGORY_ID) .fetch();
也许,通过使用您甚至会变得更好
TblcategoryRecord result = // [...] .fetchOne();
有关更多详细信息,请考虑手册:
http://www.jooq.org/doc/2.6/manual/sql-building/sql-statements/insert- statement/
或用于创建INSERT返回值的语句的Javadoc :
INSERT
http://www.jooq.org/javadoc/latest/org/jooq/InsertReturningStep.html