JDO Inheritance DataNucleus 指南提到,在 InheritanceStrategy.NEW_TABLE
类关系中,将在父类(super class)表和子类表之间创建外键。运行 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
注解只是添加一个新的外键。
可以定制吗?
最佳答案
this page的脚展示如何使用 XML 定义用于连接父类(super class)的外键。
我在注释中看不到这样做的方法(因为@Inheritance
没有@Join
,并且@Join
没有@ForeignKey
) ...但是我永远不会想将 ORM 定义硬编码到 Java 类中。我假设您可以通过 Apache JDO 人员请求这样的注释功能。
关于java - 如何自定义 DataNucleus JDO 继承层次结构中使用的外键名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31846228/