如何使用Datanucleus v3.2获取PC对象的表名?

时间:2013-08-26 12:06:57

标签: metadata jdo datanucleus

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

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

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

此代码不起作用,因为getMetaDataForClass方法现在始终返回null

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

pmf PersistenceManagerFactory clazz Class<?>对象,表示PC的类类型(即支持持久性)对象我需要检索表的名称。

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

要创建我的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

1 个答案:

答案 0 :(得分:1)

为什么JDO从JDO v2.x IIRC开始使用Metadata API时会使用一些内部(不支持的?)API?这一个http://www.datanucleus.org/products/accessplatform_3_3/jdo/metadata_api.html