如何自定义DataNucleus JDO继承层次结构中使用的外键名称?

时间:2015-08-06 03:15:26

标签: java jdo datanucleus

DataNucleus的JDO Inheritance指南提到在InheritanceStrategy.NEW_TABLE类关系中,将在超类'之间创建外键。和子类'表。运行DataNucleus模式生成器,我确实看到正在生成这样的外键。但是,我能发现的是这些外键的名称是如何定制的。

例如:

@PersistenceCapable(table = "login_identities")
@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
public abstract class AbstractLoginIdentity { ... }

@PersistenceCapable(table = "email_login_identities")
@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
public class EmailLoginIdentity extends AbstractLoginIdentity { ... }

鉴于这些类,DataNucleus将生成如下所示的外键(对于PostgreSQL):

-- Constraints for table "email_login_identities" for class(es) [com.trickle.api.accounts.EmailLoginIdentity]
ALTER TABLE "email_login_identities" ADD CONSTRAINT "email_login_identities_FK1" FOREIGN KEY ("id") REFERENCES "login_identities" ("id") ;

我无法找到改变" email_login_identities_FK1"的方法。约束的名称。向子类添加@ForeignKey注释只会添加一个新的外键。

可以自定义吗?

1 个答案:

答案 0 :(得分:1)

this page的脚显示了如何使用XML为超类的连接定义外键。

我没有看到在注释中执行此操作的方法(因为@Inheritance没有@Join@Join没有@ForeignKey)...但是我永远不想将ORM定义硬编码到Java类中。我假设您可以通过Apache JDO人员在注释中请求这样的工具。

相关问题