0

编辑-这就是答案 我错误地使用的代码是用于编辑元数据。要阅读它,请使用以下内容:

pmf.getMetadata(Machineclass.getName()).getTable()

我使用以前的 datanucleus 版本已经这样做了很长时间,但我不确定为什么它不再适用于 v3.2

此代码不起作用,因为该getMetaDataForClass方法现在总是返回null

NucleusJDOHelper.getMetaDataForClass(pmf, clazz).getTable()

其中pmfclazz是一个对象PersistenceManagerFactory,代表我需要检索表名的 PC(即具有持久性)对象的类类型。Class<?>

我只使用注释来定义我的映射。

要创建我的PersistenceManagerFactory,我使用以下代码:

JDOHelper.getPersistenceManagerFactory(new FileInputStream(filePath));

其中filePath是一个文件的路径,该properties文件具有足够的数据,并且已经使用了很长时间而没有任何更改。

编辑: 感谢Neil的回答,我改用以下代码序列:

JDOMetadata md = pmf.newMetadata();
PackageMetadata pmd = md.newPackageMetadata(clazz.getPackage());
ClassMetadata cmd = pmd.newClassMetadata(clazz);
return cmd.getTable();

我确保我正在检查的课程具有正确的元数据

@PersistenceCapable(table = "machine_table", detachable = "true", cacheable = "true")
public class Machine {

现在也cmd.getTable()回来null了!

4

1 回答 1

1

当 JDO 自 JDO v2.x IIRC 以来拥有元数据 API 时,为什么要使用一些内部(不受支持?)API?这个在这里http://www.datanucleus.org/products/accessplatform_3_3/jdo/metadata_api.html

于 2013-08-26T12:42:37.653 回答