Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自定义DataNucleus JDO继承层次结构中使用的外键名?_Java_Jdo_Datanucleus - Fatal编程技术网

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

Java 如何自定义DataNucleus JDO继承层次结构中使用的外键名?,java,jdo,datanucleus,Java,Jdo,Datanucleus,DataNucleus指南中提到,在InheritageFosterategy.NEW_表类关系中,将在超类和子类表之间创建一个外键。运行DataNucleus模式生成器时,我确实看到正在生成这样一个外键。但是,我没有发现这些外键的名称是如何定制的 例如: @PersistenceCapable(table = "login_identities") @Inheritance(strategy = InheritanceStrategy.NEW_TABLE) public abstract cl

DataNucleus指南中提到,在InheritageFosterategy.NEW_表类关系中,将在超类和子类表之间创建一个外键。运行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):

我找不到任何方法来更改“
电子邮件\u登录\u身份\u FK1
”约束的名称。向子类添加
@ForeignKey
注释只会添加一个新的外键

这可以自定义吗?

的底部显示了如何使用XML为连接到超类定义外键


我在注释中看不到这样做的方法(因为
@heritation
没有
@Join
,而
@Join
没有
@ForeignKey
)。。。但是,我决不想将ORM定义硬编码到Java类中。我想您可以通过ApacheJDO人员在注释中请求这样一个功能。

非常感谢您提供的指针!我能够通过一个附加的
.orm
文件为类指定FK名称,这解决了我的问题。(我过去和您一样,不在注释中指定ORM元数据,但后来我决定最好将所有内容都放在一个地方,而我只需要支持一个RDBMS平台。)
-- 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") ;