问题标签 [jdoql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
648 浏览

java - 转义字符串文字“by”,sql保留字,同时创建java Query对象

以下代码抛出异常,因为字符串字段中包含 SQL 保留字“by”。我将如何逃避这个保留字。该代码适用于谷歌数据存储。

这是例外: : org.datanucleus.exceptions.NucleusUserException:查询包含一个乱序的 JDOQL 关键字(“by”)。关键字只能按定义的顺序使用。

0 投票
1 回答
176 浏览

java - Google App Engine 上的 JDO UnsupportedDatastoreFeatureException

我正在尝试使用Google App Engine 上的http://db.apache.org/jdo/jdoql_methods.html中所述的 Map 的 get 方法。我的定义如下:

public class FooInfo { ... @Persistent private Map vote = new HashMap(); ... }

我试图像这样访问它:

查询查询 = persistenceManager.newQuery("SELECT FROM com.foo.app.db.FooInfo where vote.get(\"TOTAL\") >=1")

但是,Google App Engine 返回此异常: Message: javax.jdo.JDOUserException: Problem with query =1>: Unsupported method while parsing expression: InvokeExpression{[PrimaryExpression{vote}].get(Literal{TOTAL})}

这是否意味着 GAE 不支持 get 方法或者我没有正确使用它?谢谢。

0 投票
1 回答
939 浏览

google-cloud-datastore - 为什么 java.lang.Long 不能持久化?

我正在尝试在 GAE/JDO 中查询 Long 类型的 ID 列表。当我在结果集上调用 detachCopyAll() 时出现以下异常。

org.datanucleus.jdo.exceptions.ClassNotPersistenceCapableException: The class "The class "java.lang.Long" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found." is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data for the class is not found.
at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:241)
at org.datanucleus.jdo.JDOPersistenceManager.jdoDetachCopy(JDOPersistenceManager.java:1110)
at org.datanucleus.jdo.JDOPersistenceManager.detachCopyAll(JDOPersistenceManager.java:1183)
...

我可以查询用户对象的列表并将它们分离就可以了。我希望所有像 Long 这样的原始包装类都是可持久的。我究竟做错了什么?下面是我正在使用的代码。

0 投票
0 回答
669 浏览

google-app-engine - 如何使用带有 datanucleus-appengine 2.0.0-final 的 JDOQL 查询来应用提取组

升级到 datanucleus-appengine 的 2.0.0 最终版本后,当通过 Query API 使用 JDOQL 查询时,提取组现在似乎被忽略了。我不确定这是库中的错误还是我做错了。

我定义了一个“用户”实体,其中包含对其他实体的多个 1:M 列表引用。我们通过 fetch 组控制这些引用的获取,例如:

有了上面的定义,我的理解是:

  • 仅使用默认提取组时,不会提取任何关系。
  • 如果指定了 'bits' 提取组,则应提取 userHistory 和 userBranding。
  • 如果指定了“内容”获取组,则应获取用户内容。

使用 JDOQL 通过电子邮件字段获取用户时,无论指定哪些获取组,都不会获取任何关系。如果我使用 getById() 来获取用户,则会按预期应用获取组。

我已关闭 L2 缓存(在 jdoquery.xml 中设置为 NONE)。

我用来获取的测试用例如下所示(使用 2.0.0-final 版本失败,使用 1.0.10 版本通过)。

我会以错误的方式解决这个问题吗?

0 投票
1 回答
509 浏览

google-app-engine - GAE,JDO 如何通过 Long/long 类型查询主键

我定义了一个具有 Long primary key 的基类,就像这样。

和其他 pojo 扩展了 ModelBase。当我像这段代码一样被jdoql查询时

但它只是给了我一个例外。

我发现 Key 类有“Id”字段,但我不能像“id.id == :id”那样访问它。有人能告诉我如何解决吗?非常感谢!

0 投票
1 回答
236 浏览

google-app-engine - 无法查询列表GAE JDO 中的子字段

我见过很多例子,但似乎没有一个适合我的问题。我在 GAE (Java) 中使用 JDO。我没有收到任何错误消息。当我知道应该有结果时,我只是没有得到结果,否则结果与 dispatchId 的空列表匹配对象。任何帮助将不胜感激!

这是我的相关课程代码:

我正在尝试查找其 dispatchId List 包含特定 dispatchId 代码的部门。我的 Java servlet 代码是:

在 GAE 数据存储查看器(在 GAE 上直播)中,我的测试部门的 dispatchId 字段如下所示(以防万一):

[u'1353000', u'0566940', u'0566936', u'1368496']

再次感谢您的任何意见...约翰

0 投票
1 回答
154 浏览

jdo - JDOQL 正则表达式支持

JDOQL 是否支持 ^ 匹配开始和 $ 匹配结束?我很难让他们工作。

^ 和 $ 可能已经暗示了吗?

0 投票
0 回答
250 浏览

datanucleus - 批量更新数据核错误

我正在尝试在 datanucleus 中使用 JDOQL 批量更新,但出现以下异常,

2013 年 12 月 8 日 13:06:56 信息 DataNucleus.Persistence:属性 datanucleus.cache.level2 未知 - 将被忽略 13 年 12 月 8 日 13:06:56 信息 DataNucleus.Persistence:========= ======== 持久性配置 =============== 12/08/13 13:06:56 信息 DataNucleus.Persistence:DataNucleus 持久性工厂 - 供应商:“DataNucleus”版本:“2.2.5”12/08/13 13:06:56 INFO DataNucleus.Persistence:DataNucleus Persistence Factory 已为数据存储 URL="jdbc:derby:;databaseName=metastore_db;create=true" driver="org.apache 初始化。 derby.jdbc.EmbeddedDriver" userName="APP" 12/08/13 13:06:56 INFO DataNucleus.Persistence: ======================= ==================================== 12/08/13 13:06:57 INFO Datastore.Schema:使用“无”初始化目录“”,架构“APP”自动启动选项 12/08/13 13:06:57 INFO Datastore.Schema:目录“”,模式“APP”已初始化 - 管理 0 个类 12/08/13 13:06:57 INFO DataNucleus.MetaData:注册监听器元数据初始化

要执行的查询: UPDATE myDomain.MTable t SET t.tableName = 'tmp3' WHERE t.tableName == 'tmp' 12/08/13 13:06:57 INFO DataNucleus.JDO: 抛出异常 JPQL UPDATE 查询没有更新条款!查询应该类似于“UPDATE Entity e SET e.param = new_value WHERE [where-clause]” org.datanucleus.exceptions.NucleusUserException:JPQL UPDATE 查询没有更新子句!查询应该类似于 org.datanucleus.query.JDOQLSingleStringParser$Compiler 中 org.datanucleus.query.JDOQLSingleStringParser$Compiler.compileUpdate(JDOQLSingleStringParser.java:236) 中的“UPDATE Entity e SET e.param = new_value WHERE [where-clause]” .compileSelect(JDOQLSingleStringParser.java:160) 在 org.datanucleus.query.JDOQLSingleStringParser$Compiler.compile(JDOQLSingleStringParser.java:125) 在 org.datanucleus.query。

我正在使用 DN-core-2.2.4、DN-RDBMS-2.2.4、DN-Enhancer-2.1.3 和 DN-ConnectionPool-2.0.3。

我触发更新的代码片段如下,

关于我做错了什么的任何指示。

我的查询格式为“UPDATE myDomain.A t SET t.tableName = 'tmp3' WHERE t.tableName == 'tmp'”

0 投票
0 回答
365 浏览

jdo - 如何编写 JDO 查询以使用一个字符串参数检查多个对象属性?

我的 Owner 类有 6 个字符串属性。我想编写一个 JDO 查询,它应该检查一个带有 Owner 类的所有 6 个属性的字符串,如果这 6 个属性中的任何一个匹配,那么应该将该所有者对象添加到列表中。我正在使用以下 JDO 查询语法,但它不起作用:

我得到以下异常:

知道如何为此编写查询。提前致谢。

0 投票
1 回答
626 浏览

subquery - 是否可以从子查询过滤器字符串中引用外部查询?

从子查询过滤器中,我以这种方式引用外部查询:

但是当我执行主查询时,出现以下错误:

只有当我可以执行连接但我知道 JDO 不允许为子查询声明导入、变量或参数时,我才能解决此问题!