【问题标题】:GQL of GoogleAppEngine doesn't work in Java codeGoogleAppEngine 的 GQL 在 Java 代码中不起作用
【发布时间】: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


【解决方案1】:

JDOQL 没有任何 LIMIT 修饰符。请改用 RANGE。尝试 SELECT FROM ORDER BY createdDate DESC RANGE 0, 10。http://db.apache.org/jdo/jdoql_quickref.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2016-12-26
    • 1970-01-01
    • 2018-07-29
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多