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
注释只会添加一个新的外键。
可以自定义吗?
答案 0 :(得分:1)
this page的脚显示了如何使用XML为超类的连接定义外键。
我没有看到在注释中执行此操作的方法(因为@Inheritance
没有@Join
,@Join
没有@ForeignKey
)...但是我永远不想将ORM定义硬编码到Java类中。我假设您可以通过Apache JDO人员在注释中请求这样的工具。