问题标签 [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.
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 上定义的。
似乎继承类中的字段在数据存储区查询中不可用。
这实际上可以通过语法的变化或注释来实现吗?
java - 具有相同类型子级的 App Engine 类
我正在尝试在应用引擎中保存树结构。我的班级有一个父级和一个相同类型的子级列表。在我添加 children 属性之前,一切正常。我调用 pm.makePersistent() 时没有错误,但对象没有保存。有谁知道为什么这不起作用?
这是我的课。我正在使用 App Engine 版本 1.2.2。
java - JDO 与休眠的集成
在 JPA 中,要使用 hibernate,唯一需要做的就是调整 persitence.xml 并添加 hibernate 配置。请问我知道JDO,可以通过修改jdoconfig.xml,能够与hibernate集成?对此有任何参考或示例吗?
java - Google App Engine / JDO:是否有会话缓存?
由于无法使用 Google App Engine 数据存储连接表,因此我遍历实体列表并使用外键值逐一查找相关实体。
很有可能我将多次需要相同的引用实体,并且我不想为同一个实体两次访问数据存储区。
是否有某种会话缓存可以启用以消除重复查找,还是我必须自己滚动?
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)
现在它不会将数据保存到数据存储区。我不明白为什么。我曾尝试删除本地数据存储和索引文件(如网络上某处所述),但它不会工作。没有例外,没有。
有人可以调查一下,请帮忙
java - 在 Google App Engine (Java) 中保存预持久对象时出现问题
我在 google-app-engine 数据存储中保存预先保存的 JDO 对象时遇到问题。基本上,在一个 servlet 中,我创建对象并保存它。在另一个 servlet 中,我读取了对象,设置了一堆属性并尝试更新它。更新是通过对PersistenceManager的makePersistent调用进行的。没有抛出异常,也没有警告日志。但是,当我稍后访问同一个对象时,它仍然处于原始状态。
PersistenceManager在读取和更新之间永远不会关闭(如Datastore 文档中所建议的)
唯一可能与文档中的示例不同的是,读取是针对列表的,但更新是针对独立对象完成的。文档中没有任何内容不鼓励这样做。这会是个问题吗?
为了完成上下文,我仅在 Eclipse 中尝试此操作,尚未在 AppEngine 中实际尝试过。关于可能发生的事情有什么建议吗?
java - java google ap引擎中的多对多关系
我将如何在谷歌应用引擎中的数据对象之间创建多对多关系(使用 jdo)
应用引擎页面谈论 1-many 和 1-1 但不是 many-many。任何代码示例将不胜感激
java - Google App Engine / JDO:存储计算值
由于我无法对 App Engine 数据存储区进行 JOIN 查询,因此我想对我的实体对象进行一些非规范化以包含计算值,从而创建类似于基于函数的索引之类的东西。
这工作正常,但我需要手动确保在持久化对象之前刷新计算值。有没有更好的方法来做到这一点?
例如,我可以使用 @Persistent 而不是字段来注释用于获取计算值的 getter(不会有相应的 setter 或字段)?
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)有什么问题?它的语法已经非常简洁,并且与数据存储无关。如果有的话,将它封装在数据访问对象中的好处是什么?
java - 使用 JDO 和 GAE 更新对象
因此,我正在使用 Wicket 创建一个小型 Web 应用程序,该应用程序将在 google 应用程序引擎上运行。我正在使用 JDO,到目前为止,持久化数据(插入)或查询相同数据对象的数据都没有问题。也许我遗漏了一些基本的东西,我正在尝试获取其中一个持久对象,更改两个值,然后我希望在数据存储中更新修改后的对象。
我有一个持久的用户对象。我可以查询这个,所以我知道对象本身有正确的注释。
我正在运行以更新它的代码是:
这是我想要更改的这两件事的用户对象注释......
我在此代码之后立即进行查询,它在我更改值之前返回相同的对象。
任何想法我做错了什么?