需要区分两个实体之间的关系:Account 和 Transaction
Posted
技术标签:
【中文标题】需要区分两个实体之间的关系:Account 和 Transaction【英文标题】:Need to distinguish relationship between two entities: Account and Transaction 【发布时间】:2019-08-28 14:24:01 【问题描述】::)
正如主题中所述 - 我有两个实体,它们是
Account
和 Transaction
分别。我需要找出它们之间的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
会是什么样子?
感谢任何澄清! :) 祝大家有美好的一天,并提前感谢您的帮助!
保重, 保罗
【问题讨论】:
【参考方案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 一个只识别一个和一个帐户。以上是关于需要区分两个实体之间的关系:Account 和 Transaction的主要内容,如果未能解决你的问题,请参考以下文章