Ruby on Rails имеет полиморфные отношения, которые действительно полезны для реализации таких функций, как комментирование, тегирование и оценка, и многие другие.У нас может быть класс комментария, тега или рейтинга, который имеет полиморфное отношение много-к-одному с комментируемым, тегируемым и оцениваемым объектом.Кроме того, данный объект домена может выбрать реализацию любой комбинации таких отношений.Так, например, он может быть одновременно комментируемым, тегируемым и оцениваемым.
Я не мог придумать простой способ дублировать эту функциональность в Hibernate.В идеале, должен существовать класс Comment, который будет иметь отношение многие к одному с классом Commentable, а класс Commentable, наоборот, будет иметь отношение один ко многим с Comments.Было бы идеально, если бы конкретные доменные классы могли наследоваться от ряда таких классов, например Commentable и Taggable.Вещи кажутся немного сложными, поскольку класс Java может расширять только один другой класс, и некоторый код может в конечном итоге дублироваться в нескольких классах.
Я хотел бы знать, каковы наилучшие практики для аккуратного и лаконичного моделирования таких отношений с использованием Hibernate?