【发布时间】:2014-08-05 15:46:35
【问题描述】:
我对 GoogleAppEngine 的 GQL 有一点问题。 如果我在我的数据存储区执行此查询:
SELECT * FROM CoursePO ORDER BY createdDate DESC LIMIT 4;
它正确地向我显示了最多 4 个结果的响应(无论你想要什么,都可以进行元组..)。当我在我的 Java 代码中执行相同的查询时,结果是不同的。有谁知道为什么?我在执行相同查询的方法下方发布。
PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = pm.newQuery("SELECT FROM " + CoursePO.class.getName() + " ORDER BY createdDate DESC LIMIT 4");
List<CoursePO> results = (List<CoursePO>)q.execute();
LOGGER.warning("Size: " + results.size()); //This size is greather than 4!! :-(
pm.close();
return results;
非常感谢您
[编辑] 我想知道,这个问题有多downVote -.- 你认为这是一个愚蠢的问题吗?你觉得我错了吗?先试后评!
[添加信息] 结果内容与简单查询相同 q = pm.newQuery(CoursePO.class);所以,实体内部的所有元素。唯一不同的是,ORDER BY DESC 子句可以完美运行,但不适用于 LIMIT 4。
[编辑]
【问题讨论】:
-
数组的内容是什么?你有重复的元素吗?你以前从未见过的东西?其他?
-
对不起,内容和简单查询一样 q = pm.newQuery(CoursePO.class);所以,实体内部的所有元素。唯一不同的是,ORDER BY DESC 子句可以完美运行,但不适用于 LIMIT 4
-
@JoseLUgia,是你否决了我的问题? (只是想知道..)
-
啊等等,它不是真正的 GQL,而是 JDOQL,它没有任何 LIMIT 修饰符。请改用 RANGE。尝试 SELECT FROM
ORDER BY createdDate DESC RANGE 0, 10. db.apache.org/jdo/jdoql_quickref.pdf -
谢谢@JoseLUgia!这是完美的工作知道!我不知道他们(谷歌)是如何编写 GQL 语法的(所以,我认为这是一个错误(请参阅我对问题的编辑)),无论如何你的回答很好,你可以把它写成接受的回答 ;-) 我会检查它作为更好的回应!非常感谢!
标签: java google-app-engine google-cloud-datastore jdo gql