【发布时间】:2018-10-16 10:43:00
【问题描述】:
我正在将项目的数据库管理从 JDBC MySQL 转换为 JPA Hibernate,数据库应该保持不变。 (从简单的 Jersey API 到带有 Hibernate api 的 Spring)。
公司、客户和优惠券有表格。 每个公司可以管理很多优惠券,每个客户也可以“购买”很多优惠券。
因此,我有一个名为 company_coupon 的连接表和另一个名为 customer_coupon 的表。
当一个 Company 被删除时,如果 Coupon 不属于任何其他 Company - 因此没有经理 - Coupon 将被删除,并且因此,所有关系(company_coupon 和 customer_coupon)也是如此。
当客户被删除时,coupon_customer 中的关系也应该被删除。
在我看来,这就像 OneToMany 关系,因为 优惠券 不必知道他的所有者是谁,(公司管理优惠券,客户拥有优惠券) ,但我发现的有关 JPA Hibernate 和连接表的所有内容都表明这是一个 ManyToMany 关系,这让我感到困惑。
如何定义我在 JPA Hibernate 中描述的内容?
此外,我曾经对所有内容都有存档表,同时从原始表中删除它们。这可能会使处理东西变得混乱。
所以我添加了一个 'removed' 字段,并配置实体的删除功能,通过以下方式将其删除状态更改为 true:
@SQLDelete(sql =
"UPDATE " + TableHelper.TBL_COMPANY
+ " SET " + TableHelper.REMOVED + " = true"
+ " WHERE " + TableHelper.COMPANY_KEY + " = ?")
现在,如果您尝试删除公司,只会更改“removed”值。
但我希望所有未被管理的优惠券(与任何现有的、未归档的公司无关)也被归档。
仅用于管理数据的过程真的很复杂.. 任何想法如何有效地做到这一点?
提前致谢:)
【问题讨论】:
-
我认为这个delete语句会和update语句类似。所以当你定义 SqlDelete 它将不起作用
标签: java mysql hibernate jpa jointable