问题标签 [jdo]

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 投票
2 回答
3033 浏览

java - Java App Engine Datastore:如何查询对象继承类的字段?

应用引擎 1.2.2。我像这样定义一个类 Product:

我像这样定义派生类 Book:

然后我像这样制作一个新对象:

PersistenceManager pm = PMF.get().getPersistenceManager(); pm.makePersistent(new Book("乔治奥威尔", "1984"));

我可以使用如下查询来查询这个新对象:

查询 query = pm.newQuery("select from " + Book.class.getName() + " where author == param"); query.declareParameters("字符串参数"); List results = (List) query.execute("George Orwell");

这将返回对象,因为我正在查询 Book 上定义的字段“作者”。

然而这不起作用:

查询 query = pm.newQuery("select from " + Book.class.getName() + " where title == param"); query.declareParameters("字符串参数"); 列表结果 = (List) query.execute("1984");

它抛出一个异常,指出没有字段“标题”,即使这是在派生类 Product 上定义的。

似乎继承类中的字段在数据存储区查询中不可用。

这实际上可以通过语法的变化或注释来实现吗?

0 投票
1 回答
190 浏览

java - 具有相同类型子级的 App Engine 类

我正在尝试在应用引擎中保存树结构。我的班级有一个父级和一个相同类型的子级列表。在我添加 children 属性之前,一切正常。我调用 pm.makePersistent() 时没有错误,但对象没有保存。有谁知道为什么这不起作用?

这是我的课。我正在使用 App Engine 版本 1.2.2。

0 投票
2 回答
1776 浏览

java - JDO 与休眠的集成

在 JPA 中,要使用 hibernate,唯一需要做的就是调整 persitence.xml 并添加 hibernate 配置。请问我知道JDO,可以通过修改jdoconfig.xml,能够与hibernate集成?对此有任何参考或示例吗?

0 投票
1 回答
665 浏览

java - Google App Engine / JDO:是否有会话缓存?

由于无法使用 Google App Engine 数据存储连接表,因此我遍历实体列表并使用外键值逐一查找相关实体。

很有可能我将多次需要相同的引用实体,并且我不想为同一个实体两次访问数据存储区。

是否有某种会话缓存可以启用以消除重复查找,还是我必须自己滚动?

0 投票
1 回答
771 浏览

java - 自我加入谷歌应用引擎(java)

我已经修改了谷歌应用引擎(java)附带的留言簿示例,以使用某种“自我加入”来包含父子关系。

现在我的 greeting.java 文件看起来像这样

注意添加了父子字段,并将主键类型更改为 com.google.appengine.api.datastore.Key(如http://code.google.com/appengine/docs/java/datastore/关系.html#Owned_One_to_Many_Relationships

现在它不会将数据保存到数据存储区。我不明白为什么。我曾尝试删除本地数据存储和索引文件(如网络上某处所述),但它不会工作。没有例外,没有。

有人可以调查一下,请帮忙

0 投票
1 回答
335 浏览

java - 在 Google App Engine (Java) 中保存预持久对象时出现问题

我在 google-app-engine 数据存储中保存预先保存的 JDO 对象时遇到问题。基本上,在一个 servlet 中,我创建对象并保存它。在另一个 servlet 中,我读取了对象,设置了一堆属性并尝试更新它。更新是通过对PersistenceManager的makePersistent调用进行的。没有抛出异常,也没有警告日志。但是,当我稍后访问同一个对象时,它仍然处于原始状态。

PersistenceManager在读取和更新之间永远不会关闭(如Datastore 文档中所建议的)

唯一可能与文档中的示例不同的是,读取是针对列表的,但更新是针对独立对象完成的。文档中没有任何内容不鼓励这样做。这会是个问题吗?

为了完成上下文,我仅在 Eclipse 中尝试此操作,尚未在 AppEngine 中实际尝试过。关于可能发生的事情有什么建议吗?

0 投票
2 回答
2868 浏览

java - java google ap引擎中的多对多关系

我将如何在谷歌应用引擎中的数据对象之间创建多对多关系(使用 jdo)

应用引擎页面谈论 1-many 和 1-1 但不是 many-many。任何代码示例将不胜感激

0 投票
1 回答
368 浏览

java - Google App Engine / JDO:存储计算值

由于我无法对 App Engine 数据存储区进行 JOIN 查询,因此我想对我的实体对象进行一些非规范化以包含计算值,从而创建类似于基于函数的索引之类的东西。

这工作正常,但我需要手动确保在持久化对象之前刷新计算值。有没有更好的方法来做到这一点?

例如,我可以使用 @Persistent 而不是字段来注释用于获取计算值的 getter(不会有相应的 setter 或字段)?

0 投票
10 回答
17422 浏览

architecture - 为什么将 DAO 层置于持久层之上(如 JDO 或 Hibernate)

数据访问对象 (DAO) 是一种常见的设计模式,由 Sun 推荐。但最早的 Java DAO 示例直接与关系数据库交互——它们本质上是在进行对象关系映射 (ORM)。现在,我看到 DAO 是在 JDO 和 Hibernate 等成熟的 ORM 框架之上,我想知道这是否真的是一个好主意。

我正在开发一个使用 JDO 作为持久层的 Web 服务,并且正在考虑是否引入 DAO。在处理包含其他对象映射的特定类时,我预见到一个问题:

JDO 足够聪明地将它映射到“BOOKS”和“BOOKDESCRIPTIONS”表之间的外键约束。它透明地加载 BookDescription 对象(我相信使用延迟加载),并在持久化 Book 对象时持久化它们。

如果我引入一个“数据访问层”,写一个像BookDao这样的类,把所有的JDO代码都封装在里面,那么这个JDO对子对象的透明加载是不是绕过了数据访问层呢?为了一致性,不应该通过一些 BookDescriptionDao 对象(或 BookDao.loadDescription 方法)加载和持久化所有 BookDescription 对象吗?然而,以这种方式重构会使操作模型变得不必要地复杂。

所以我的问题是,直接在业务层调用 JDO(或 Hibernate,或任何你喜欢的 ORM)有什么问题?它的语法已经非常简洁,并且与数据存储无关。如果有的话,将它封装在数据访问对象中的好处是什么?

0 投票
1 回答
2481 浏览

java - 使用 JDO 和 GAE 更新对象

因此,我正在使用 Wicket 创建一个小型 Web 应用程序,该应用程序将在 google 应用程序引擎上运行。我正在使用 JDO,到目前为止,持久化数据(插入)或查询相同数据对象的数据都没有问题。也许我遗漏了一些基本的东西,我正在尝试获取其中一个持久对象,更改两个值,然后我希望在数据存储中更新修改后的对象。

我有一个持久的用户对象。我可以查询这个,所以我知道对象本身有正确的注释。

我正在运行以更新它的代码是:

这是我想要更改的这两件事的用户对象注释......

我在此代码之后立即进行查询,它在我更改值之前返回相同的对象。
任何想法我做错了什么?