使用JDO,是否可以查询实现特定接口的所有对象?

时间:2010-10-24 21:36:31

标签: java interface jdo datanucleus

我尝试使用以下查询:

Query q = getPersistenceManager().newQuery(
getPersistenceManager().getExtent(ICommentItem.class, false)
);

但得到了:

org.datanucleus.exceptions.NoPersistenceInformationException:班级
“com.sampleapp.data.dataobjects.ICommentItem”必须是可持久的,但是没有为此类找到Meta -Data / Annotations。请检查元数据/注释是否在有效的文件位置中定义。

我在Datanucleus论坛上看到有人建议(几年前)使用:

<interface name=IComment/> 

我尝试了但是当我运行schema-update时它没有创建任何表。标签还有相关性吗?我可以在文档中看到任何内容。

我也尝试过:

<class name=IComment/>

但是在运行schema-create时出现了这个错误:

SEVERE:使用ASMClassEnhancer抛出增强错误 显示java.lang.NullPointerException 在org.datanucleus.enhancer.asm.method.DefaultConstructor.execute(DefaultConstructor.java:63) 在org.datanucleus.enhancer.asm.JdoClassAdapter.visitEnd(JdoClassAdapter.java:317) 在org.objectweb.asm.ClassReader.accept(未知来源) 在org.objectweb.asm.ClassReader.accept(未知来源) at org.datanucleus.enhancer.asm.ASMClassEnhancer.enhance(ASMClassEnhancer.java:388) at org.datanucleus.enhancer.DataNucleusEnhancer.enhanceClass(DataNucleusEnhancer.java:1035) 在org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:609) 在org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316) 2010年10月23日下午6:46:33 org.datanucleus.enhancer.DataNucleusEnhancer addMessage INFO:ERROR(PersistenceCapable):com.sampleapp.data.dataobjects.ICommentItem 2010年10月23日下午6:46:33 org.datanucleus.enhancer.asm.ASMClassEnhancer增强 信息:类“com.sampleapp.data.dataobjects.Article”已经增强。 2010年10月23日下午6:46:33 org.datanucleus.enhancer.DataNucleusEnhancer addMessage 严重:DataNucleus Enhancer因错误而完成。请查看增强器日志以获取完整详细信息。某些类可能已得到增强,但有些类会导致错误 增强类失败 - 请参阅日志以获取详细信息 org.datanucleus.exceptions.NucleusException:类增强期间失败 - 有关详细信息,请参阅日志 在org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:620) 在org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1316)

1 个答案:

答案 0 :(得分:0)

事实证明目前不支持此功能,但计划在2.2.0M3版本中添加