Хобрук: Ваш путь к мастерству в программировании

@OneToMany, где mappedBy — это @Any

У меня есть полиморфная связь, представленная интерфейсом commentable. Комментарии могут быть нацелены как на посты, так и на другие комментарии.

Я могу представить сторону комментария этих отношений, извлекая целевой пост, но я не могу представить сторону поста, например. Я не могу получить комментарии к посту.

Я использую @Any для полиморфизма, но если это не правильный способ сделать это, то я с радостью изменю направление.

Если у меня есть только код комментария, все работает нормально

// Comment.java
@Any(
        metaDef = "CommentableMetaDef",
        metaColumn = @Column(name = "commentable_entity")
)
@JoinColumn(name = "commentable_id")
private Commentable target;
// Post.java
@OneToMany(mappedBy = "target", targetEntity = Comment.class)
private Set<Comment> comments;

^^ Это ломается.

Если это уместно, вот мой metaDef внутри package-info.java

// package-info.java
@AnyMetaDef(name = "CommentableMetaDef", metaType = "string", idType = "int",
        metaValues = {
                @MetaValue(value = "COM", targetEntity = Comment.class),
                @MetaValue(value = "POS", targetEntity = Post.class)
        }
)
@AnyMetaDef(name = "ReactableMetaDef", metaType = "string", idType = "int",
        metaValues = {
                @MetaValue(value = "COM", targetEntity = Comment.class),
                @MetaValue(value = "POS", targetEntity = Post.class)
        }
)

  • Боюсь, что @Any может быть только однонаправленным. См. документацию. 05.09.2020
  • Я думаю, что этот ответ может быть полезен 05.09.2020
  • @crizzis действительно решил мою проблему. Спасибо за публикацию! 08.09.2020

Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..