@不同数据库上的表之间的实体关系 [英] @Entity Relation between tables on different databases

查看:37
本文介绍了@不同数据库上的表之间的实体关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java Enterprise和JPA的新手(使用NetBeans的EclipseLink JPA2.0)。 我正在尝试实现不同项目和包中的不同@Entity类之间的链接,但没有成功。

数据库D1有一个表T1和一个引用数据库D2上的表T2的同义词T2。

所以我创建了两个项目(JAR):

D1-JPA包含@Entity Package1.T1.class和sistence.xml(也映射T2)

包含@Entity Package1.T2.class和sistence.xml的D2-JPA

我需要创建从T1到T2的@ONEtoONE关系,以便T1具有

@ONEtoONE

公共%t2%t2;

问题是当我尝试执行简单的JPQL查询时:

从T1%t选择%t

翻译后的查询类似于

从t1 t;--"t2_t2"中选择t.field1、t.field2、t2_t2??

当我期望的东西是 从t1 t1、t2 t2中选择t1.field1、t1.field2、t2.field1

WHERE(联接条件)

你有什么解决问题的办法?如果D1上的同义词与D2上的实际表的名称不同(同义词TT2引用D2上的T2.)怎么办?

全部考虑。

F.

jpa

纯推荐答案中的@ONEtoONE只有在目标是此持久性单元中的实体时才有效。因为您没有得到异常,所以它的工作方式就好像D1持久性单元类加载器可以找到并处理这两个异常一样。映射将T1->T2外键字段默认为"T2_T2",可能是因为您的T2实体将T2字段或属性标记为其ID。如果希望将其他数据库列用作外键,则需要在关系上指定联接列。

我不清楚您的目的,因为T1必须能够导入T2,所以它们不是完全分开的-表也应该在同一个数据库中,以便它们之间有1:1的比例。但是您可以将多个持久化单元组合在一起,并将它们与此处介绍的EclipseLink中的复合持久化单元功能一起使用http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Composite_Persistence_Units

这篇关于@不同数据库上的表之间的实体关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆