如何自定义 DataNucleus JDO 继承层次结构中使用的外键名称?
How to customize the foreign key names used in DataNucleus JDO inheritance hierarchies?
DataNucleus 的 JDO Inheritance 指南提到在 InheritanceStrategy.NEW_TABLE
class 关系中,将在 superclass' 和 sub[=26= 之间创建一个外键]' 表。 运行 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 { ... }
给定那些 classes,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
注释到 subclass 只是添加一个新的外键。
这个可以定制吗?
this page 的脚部展示了如何使用 XML 为连接到 superclass 定义外键。
我在注释中看不到这样做的方法(因为 @Inheritance
没有 @Join
,并且 @Join
没有 @ForeignKey
)...但是那么我永远不想将 ORM 定义 硬编码为 Java class。我假设您可以通过 Apache JDO 人员在注释中请求这样的功能。
DataNucleus 的 JDO Inheritance 指南提到在 InheritanceStrategy.NEW_TABLE
class 关系中,将在 superclass' 和 sub[=26= 之间创建一个外键]' 表。 运行 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 { ... }
给定那些 classes,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
注释到 subclass 只是添加一个新的外键。
这个可以定制吗?
this page 的脚部展示了如何使用 XML 为连接到 superclass 定义外键。
我在注释中看不到这样做的方法(因为 @Inheritance
没有 @Join
,并且 @Join
没有 @ForeignKey
)...但是那么我永远不想将 ORM 定义 硬编码为 Java class。我假设您可以通过 Apache JDO 人员在注释中请求这样的功能。