我是 Java Enterprise 和 JPA 的新手(使用 Netbeans 的 EclipseLink JPA 2.0)。
我试图实现不同项目和包中不同 @Entity 类之间的链接,但没有成功。
数据库 D1 具有表 T1 和引用数据库 D2 上的表 T2 的同义词 T2。
所以我创建了 2 个项目(Jars):
D1-jpa 包含 @Entity package1.T1.class 和 persistence.xml (也映射 T2)
D2-jpa包含@Entity package1.T2.class和persistence.xml
我需要创建一个从 T1 到 T2 的 @OneToOne 关系,以便 T1 有
@一对一
公共 T2 t2;
问题是当我尝试执行简单的 JPQL 查询时:
从 T1 中选择 t
翻译后的查询类似于
从 T1 t 中选择 t.field1、t.field2、T2_t2; --“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 http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Composite_Persistence_Units
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)