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

标签 java jdo datanucleus

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/

相关文章:

java - 如何检查 Runnable 的值?

java - 为什么在案例 2 : on Java 7? 中相同的值会出现两个不同的答案

android - 尝试在 Android Studio 上运行 Enhance

java - 如何使用带有数据库的 Java 从 XML 模式实现往返

java - 使用乐观锁定创建新的数据存储实体 (Google App Engine Java/JPA)

java - 如何在单次 JVM 运行中重新启动 DataNucleus?

java - 根据数组中找到的单词仅返回一个句子

java - 如何在不调用包的情况下调用我在 Java 中创建的变量? (在同一个类(class))

java - GAE 数据核不获取子实体

google-app-engine - 如何在身份验证期间防止 Google App Engine/最终一致的数据存储中出现重复值