簡體   English   中英

JPA / Hibernate-多態多對一關系設計

[英]JPA/Hibernate - Polymorphic many-to-one relationship design

我試圖將現有的Ruby on Rails / Active Record組件轉換為Springboot / JPA / Hibernate堆棧。

有一個實體模型,其中多個不相關的類型都可以對它們應用注釋。

在Rails世界中,這是通過模型內的多態關系來完成的。 從數據庫的角度來看,這意味着我有一個注釋表,其中有一個“ commentable_id”和“ commentable_type”,它們指向擁有注釋的實體類型和ID。

我正計划有一個抽象類'CommentableEntity',所有需要支持注釋的實體都將擴展。

我嘗試應用不同的繼承策略,但找不到合適的繼承策略:-單個表不起作用,因為具有注釋的實體具有不應該在同一表中的不同屬性-聯接表感覺很尷尬因為僅用於CommentableEntity的表將僅具有ID字段(是這些實體之間的唯一共享字段)

是否有另一種方法可以實現這一目標? 我正在嘗試避免使用單獨的多對多表的模型。 apple_comments,orange_comments等,或單獨的注釋表,例如apple_comment(具有apple_id),orange_comment(具有orange_id)等。

感謝您的任何建議!

“我正在計划創建一個抽象類'CommentableEntity',所有需要支持注釋的實體都將擴展”

您可以完全使用繼承。 只需使用@MappedSuperclass批注注釋“ CommentableEntity”,它將此實體定義為父實體。 當您需要父類包括“ id”,“ version”,“ createdAt”和“ updatedAt”字段時,將始終使用它。 所以我認為您也有類似情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM