问题标签 [datanucleus]
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.
eclipse - datanucleus 增强器和 javaw:“参数不正确”
我在 Windows XP 上使用 eclipse 和用于 gwt + gae 应用程序的 datanucleus 增强器。当我运行增强器时,出现错误:
我以前遇到过这个问题,这是由于类路径很长。我只花了一个半小时通过移动库甚至移动我的 Eclipse 安装来缩短我的类路径,但没有运气。
关于我应该从哪里开始寻找答案的任何想法?该错误消息不包含有关其所在目录或任何内容的任何信息。有点让人生气!是否可以使 javaw 的输出更详细?是否有可能绕过这个类路径大小错误?
java - 如何在 Eclipse 中设置编译器选项“处理器”?
我正在尝试按照这些说明配置 DataNucleus 增强器:
如果使用 Eclipse,则需要编辑项目属性。转到 Java 编译器 -> 注释处理并启用项目特定设置并启用注释处理。然后转到 Java Compiler -> Annotation Processing -> Factory Path ,启用项目特定设置,然后将以下 jars 添加到列表中: datanucleus-enhancer.jar 、 datanucleus-core.jar 、 jdo-api.jar 和 asm.jar并将编译器参数处理器设置为 org.datanucleus.enhancer.EnhancerProcessor
在我看到粗体字之前,一切都很棒。我似乎无法弄清楚他们的意思。有人可以将这句话扩展为对新手更友好。:)
java - 使用 JDO,是否可以查询实现特定接口的所有对象?
我尝试使用以下查询:
但得到:
org.datanucleus.exceptions.NoPersistenceInformationException:
“com.sampleapp.data.dataobjects.ICommentItem”类必须是可持久的,但找不到此类的元数据/注释。请检查元数据/注释是否定义在有效的文件位置。
我在 Datanucleus 论坛上看到有人建议(几年前)使用:
我试过了,但是当我运行模式更新时它没有创建任何表。标签仍然是相关的吗?我无法在文档中看到任何内容。
我也试过:
但是在运行 schema-create 时出现了这个错误:
dataobjects.ICommentItem Oct 23, 2010 6:46:33 PM org.datanucleus.enhancer.asm.ASMClassEnhancer 增强信息:类“com.sampleapp.data.dataobjects.Article”已经增强。2010 年 10 月 23 日下午 6:46:33 org.datanucleus.enhancer.DataNucleusEnhancer addMessage 严重:DataNucleus Enhancer 完成但出现错误。请查看增强器日志以获取完整详细信息。某些类可能已被增强,但有些导致错误 类增强期间失败 - 有关详细信息,请参阅日志(DataNucleusEnhancer.java:620) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316) ASMClassEnhancer 增强信息:类“com.sampleapp.data.dataobjects.Article”已经增强。2010 年 10 月 23 日下午 6:46:33 org.datanucleus.enhancer.DataNucleusEnhancer addMessage 严重:DataNucleus Enhancer 完成但出现错误。请查看增强器日志以获取完整详细信息。某些类可能已被增强,但有些导致错误 类增强期间失败 - 有关详细信息,请参阅日志(DataNucleusEnhancer.java:620) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316) ASMClassEnhancer 增强信息:类“com.sampleapp.data.dataobjects.Article”已经增强。2010 年 10 月 23 日下午 6:46:33 org.datanucleus.enhancer.DataNucleusEnhancer addMessage 严重:DataNucleus Enhancer 完成但出现错误。请查看增强器日志以获取完整详细信息。某些类可能已被增强,但有些导致错误 类增强期间失败 - 有关详细信息,请参阅日志(DataNucleusEnhancer.java:620) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316) DataNucleusEnhancer addMessage 严重:DataNucleus Enhancer 完成但出现错误。请查看增强器日志以获取完整详细信息。某些类可能已被增强,但有些导致错误 类增强期间失败 - 有关详细信息,请参阅日志(DataNucleusEnhancer.java:620) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316) DataNucleusEnhancer addMessage 严重:DataNucleus Enhancer 完成但出现错误。请查看增强器日志以获取完整详细信息。某些类可能已被增强,但有些导致错误 类增强期间失败 - 有关详细信息,请参阅日志(DataNucleusEnhancer.java:620) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316)
java - 使用 JDO 持久化/检索对象时 DataNucleus DAO 对象中的 ClassCastException
我已经使用 Spring 和 Jetty 创建了一个简单的 webapp,并且正在使用 DataNucleus 和 DB4O 创建一个 hello world JDO 测试。
我可以坚持上课没问题,但是当我去查询课程时,我得到了一个ClassCastException
,不能a.b.c.MyClass
转换为a.b.c.MyClass
.
当我检查我创建的原始对象的类加载器时,它[WebAppClassLoader@1592226291]
自然是 springs WebApp 类加载器。
我在同一个 servlet 方法中执行持久化操作和查询操作,当我用一个简单的查询从数据库中重新读取对象时,我从数据库中取回了一组 abcMyClass 对象,但类加载器是[sun.misc.Launcher$AppClassLoader@5acac268]
,因此异常.
按照此处的 DataNucleus 文档http://www.datanucleus.org/extensions/classloader_resolver.html
...JDO2 类加载机制利用 3 个类加载
器 * 创建 PersistenceManagerFactory 时,您可以指定一个类加载器。如果指定,则首先使用
* 第二个要尝试的类加载器是当前线程的类加载器。
* 要尝试的第三个类加载器是 PMF 上下文的类加载器。
我介绍了记录的前两个选项,并通过 servlet 中的以下调试步骤验证了类加载器WebAppClassLoader
在 Servlet 中:
两者都[WebAppClassLoader@1592226291]
作为类加载器产生。
我不确定我要去哪里错了。
java - JDO 不检索/保留集合
我定义了以下数据模型类:
MyPOJO 只是一个实现 Serializable 的简单类。
当我通过 DataNucleus/JDO 持久保存它并检索它时,我可以myField
很好地读取它,但myCollection
它是空的(尽管我在持久化它之前将它设置为两个 MyPOJO 对象的向量)。
google-app-engine - App Engine 数据存储区从多个父级获取子级数
我正在使用 Google App Engine (DataNucleus) 的数据存储区。我有两个课程,一个聊天和一个评级。一个聊天的评分可以超过一个,所以我通过在 Chat 类中添加一个列表来创建一对多的关系。
现在我想知道未评级聊天的数量,所以我做了以下事情:
它只是遍历所有聊天并检查评分数是否为 0。
当有 10 个聊天时,此解决方案效果很好,但是当我有 500 多个聊天时,速度很糟糕(15 秒 +)。
我想也许 size() 方法更快。所以我尝试了 Query.setFilter("ratings.size() == 0") 但这给了我以下错误:解析表达式时不受支持的方法:InvokeExpression{[PrimaryExpression{ratings}].size()}
有什么办法可以提高速度吗?
来自 DATANUCLEUS 专家的编辑反应:
这是谷歌的插件,他们对此负责(他们没有实现该方法的事实是他们的问题......我确信他们的数据存储提供了一种获取集合大小的方法)。他们的插件仅使用 DataNucleus 1.1,而我们目前正在开发 2.2,因此,您可以猜到,我们没有太多时间用于 GAE/J 环境。
为什么 google 使用 1.1 版本?
java - JDO: Is the PersistenceManager a singleton?
Just the basics: I'm using DataNucleus backed with an embedded DB4O database.
If I do this simple test:
I get a file locked exception:
Which tells me I don't know how the PersistenceManager
is supposed to work. I thought I just called PersistenceManagerFactory
whenever I needed a PersistenceManager
to query or persist data and I would get something thread safe.
- Do I need to make PersistenceManager a singleton across my entire application?
- How do multiple threads, performing queries and updates work in JDO/DataNucleus?
java - @Unique 在带有 NeoDatis 的 DataNucleus 中没有任何影响
使用 JDO / DataNucleus / NeoDatis 数据存储
我将@Unique 添加到可持久对象的字段中,但是我可以创建多个违反唯一约束的对象。DataNucleus/NeoDatis 的文档建议支持唯一字段。
如果我使用相同的用户名将多个对象添加到数据库中,那么这样做没有问题。
java - 在 JDO/DataNucleus 中,我可以查询 Joda-Time DateTime 对象吗?
我看到 DataNucleus 支持 org.joda.DateTime
http://www.datanucleus.org/products/accessplatform_2_2/jdo/types.html
但这是否意味着我可以索引该字段并针对该时间字段执行查询,例如“哪里 jodaTimeField > 昨天”?
或者只是它可以存储而不需要求助于序列化?
java - JDO/DataNucleus 中的“附加”对象是什么意思?
DataNucleus 文档谈论了很多关于分离对象以及分离意味着什么,但是对于新用户来说,他们有点跳过了简单的问题:附加意味着什么?
http://www.datanucleus.org/products/accessplatform_1_1/jdo/attach_detach.html
如果我执行:
如果我理解正确,我将取回刚刚发布到数据库的对象的副本,但它的特殊之处有点模糊。
- 如果我对该对象的某个字段进行更改,是否会自动更新数据库?文档似乎暗示了这一点,但不要特别指出。
- 我是否需要“分离”它以确保不会发生这种情况?
- 这(JDO 的附加/分离功能)与 SQL 有何不同,我习惯于简单理解、原子、插入、查询、更新和删除?