【问题标题】:JPA: many to one mapping from table in another databaseJPA:从另一个数据库中的表进行多对一映射
【发布时间】:2017-07-07 05:23:36
【问题描述】:

我有一个现有的表(我们称之为门票),我需要与另一个数据库中的表建立多对一关系(我们称之为事务)。我知道在 JPA 中不可能建立多对一的关系,但我正在寻找的是在不诉诸 JPA 的情况下连接这两个表。此外,将这些表合并到一个数据库不是一种选择(根据客户请求)。

我在这里不知所措。

【问题讨论】:

  • 欢迎来到 SO。您能否向我们展示一些有关您迄今为止尝试过的代码?

标签: java jpa


【解决方案1】:

扩展此答案 (JPA using multiple database schemas) 我认为您需要执行以下操作:

public class Schemas {
  public static final String S1D="S1D";
  public static final String S2D="S2D";
}

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "Tickets", schema=Schemas.S1D)
public class Tickets {

@ManyToOne
@JoinColumn(name = "transaction_id")
    private Transaction transaction;

}

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "Transaction", schema=Schemas.S2D)
public class Transaction {
...
}

【讨论】:

    【解决方案2】:

    在 JPA 中建立多对一关系并非不可能。这里有一个例子:

    https://en.wikibooks.org/wiki/Java_Persistence/ManyToOne

    关于如何使用两个数据库中的表来解决您的特定问题,您可以使用两个不同的数据源,或者一个数据库上的视图,指向另一个数据库上的表。选择主要取决于您尝试连接的数据库的性质。

    【讨论】:

    • 您将使用什么特定技术来实现跨数据库视图?考虑到不知道实际使用的数据库。
    • 这取决于所使用的数据库,但这不是一个不寻常的解决方案。
    • 而且特别容易实现,例如您正在使用两个不同的 Oracle 实例。
    • 正确,如果您使用的是相同的数据库。如果您不需要参照完整性。这不是一个很好的解决方案。
    • 嗯...这个问题没有提供太多信息,所以我打开了解决方案的范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2019-02-27
    • 1970-01-01
    • 2015-07-02
    相关资源
    最近更新 更多