【问题标题】:Need to distinguish relationship between two entities: Account and Transaction需要区分两个实体之间的关系:Account 和 Transaction
【发布时间】:2019-08-28 14:24:01
【问题描述】:

:)

正如主题中所述 - 我有两个实体,它们是 AccountTransaction 分别。我需要找出它们之间的Relationship 以及它在Java Spring 上下文和Hibernate 中的工作方式。

我很可能会为Account 实体使用下一个字段:

- UUID (as a unique identifier) (Primary Key)
- ownerName
- balance

对于Transaction 实体:

- Id (Primary Key)
- transactionAmount
- transactionEmitter
- transactionReceptor

我考虑过这种关系,Account 可以有多个transactions,而Transaction 至少可以有two accounts 连接? 所以应该是ManyToMany?所以我需要创建一个Jointable 以使其在 Spring 上下文中工作? Jointable 会是什么样子?

感谢任何澄清! :) 祝大家有美好的一天,并提前感谢您的帮助!

保重, 保罗

【问题讨论】:

    标签: database entity relationship h2


    【解决方案1】:

    如果场景说明在两个账户之间进行交易,一种可能的观点是,交易实体可以有一个外键来引用交易中涉及的每个账户。此外,一个帐户可以执行许多事务,并且执行一个涉及两个(或更多,取决于场景)帐户的事务。因此,多对多关系可能是此类场景的最佳描述。 Here is a tutorial 了解如何实现多对多关系。

    希望对你有帮助。

    【讨论】:

    • 谢谢你的回复,Hugo :) 另外,你会坚持使用 Web 应用程序或控制台应用程序来解决这个问题吗?我对这部分有点不理解,请您澄清一下:交易实体可以有一个外键来引用交易中涉及的每个帐户
    • 一个例子:我们有两个账户,A和B。交易T是从A账户到B账户。假设我们有一个 Transaction 表,其中包含以下字段:transactionID、transactionEmitter 和 transactionReceptor。我们将在 Transaction 表中有一条记录,告诉我们从 A 账户(账户 A 的外键 - transactionEmitter)到 B 账户(账户 B 的外键 - transactionReceptor)进行了交易。
    • 如果我们认为交易只在两个账户之间进行,是的,这两个外键引用表 Account。
    • 好的,我现在看到了。在 Transaction 表中不会有 accountId 外键属性,而是 Emitter 和 Receptor 都是引用 Account.Id 的外键,然后例如在使用 POST 方法创建 Transaction 并传递 JSON 数据时,它会像 { "transactionAmount ":50, "transactionEmitter":Account.Id_1, "transactionReceptor":Account.Id_2 }
    • 根据 Spring JPA 创建类时,可以在 Transaction 类中实现两个变量:transactionEmitter 和 transactionReceptor。这些字段中的每一个都可以与表帐户一对一。也就是说,一个 Transaction 有一个 transactionEmitter 只识别一个和一个帐户,还有一个 transactionReceptor 一个只识别一个和一个帐户。
    猜你喜欢
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2018-08-20
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多