我正在尝试用QueryDsl翻译这个查询:
update myThings set firstColumn = 'newValue' where secondColumn in ('interesting', 'stuff')
我花了几个小时寻找文档,但是java fu在这个文件中不够强大.) :(我可以找到各种各样的QueryDsl例子,但我找不到任何例子。我可能需要SimpleExpression.eqAny( CollectionExpression ),但我不知道如何围绕简单的字符串列表构建这样的CollectionExpression。
List<String> interestingValues = Arrays.asList("interesting", "stuff");
queryFactory.update(myThings)
.set(myThings.firstColumn, "newValue")
// .where(myThings.secondColumn.in(interestingValues)
// 'in' will probably try to look in table "interestingValues"?
// .where(myThings.secondColumn.eqAny(interestingValues)
// 'eqAny' seems interesting, but doesn't accept a list
.execute();
我所能找到的只是API定义,但是我在泛型中迷失了--任何其他的“新”java概念,我仍然很难理解。举一个例子是非常感谢的。
发布于 2015-12-12 08:29:58
你必须使用new JPAUpdateClause(session, myThings)
JPAUpdateClause<myThings> update = new JPAUpdateClause(session, myThings);
update.set(myThings.firstColumn, "newValue")
.where(myThings.secondColumn.in(interestingValues))
.execute();
如果使用hibernate,则使用HibernateUpdateClause()
;
https://stackoverflow.com/questions/34239863
复制