我当前的查询如下,对于单个用户来说效果很好:
1
ao.find(da.class, Query.select().where("user=?",user)
现在,我想更改此查询以获取多用户数据,如下所示,但它不起作用并给我无效的列名称。
1
ao.find(da.class, Query.select().where("user IN (?)",user)
此外,还尝试应用单引号。即使单个用户输入参数值也不起作用并给出相同的错误。
任何人都可以告诉我哪里出了问题并且必须在这里纠正吗?
错误为,
Caused by: java.sql.SQLException: Column not found: user in statement [SELECT * FROM PUBLIC.AO_0371A8_da WHERE "user" IN (?)]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.prep
或when - where("使用了"('?')"并针对单个用户进行了验证
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Column not found: user in statement [SELECT * FROM PUBLIC.AO_0371A8_da WHERE "user" IN ('?')]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.DelegatingConnection.prepareState
谢谢
最佳答案
如果要使用 IN 查询,则需要自己构造占位符列表。以下是摘自:https://ecosystem.atlassian.net/browse/AO-263?focusedCommentId=69495&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-69495的片段:
MyEntity[] findEntities(Iterable<String> matchValues) {
String placeholderCommaList = Joiner.on(", ").join(Iterables.transform(matchValues, Functions.constant("?")));
Object[] matchValuesArray = Iterables.toArray(matchValues, Object.class);
return ao.find(MyEntity.class, "primary_key_field_name", Query.select().where("match_field_name IN (" + placeholderCommaList + ")", matchValuesArray));
}
重要的是,占位符(“?”)的数量与参数的数量相匹配。
希望这有帮助
关于java - 如何创建 Activity 对象 'IN'条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16581656/