Intereting Posts
Лучший способ обработки возвратов в предикате Добавить пользовательские запросы REST API для Twitter с помощью Kotlin Сравнение ссылок и стоимости Как добавить пользовательские группы просмотра в Anko DSL? перегрузка + и + = операторов для «классов номеров» Как правильно обрабатывать значения байтов, превышающие 127 в Котлине? Почему я не могу получить класс общего параметра? Функциональный маршрут Spring Web Flux (реактивный) не работает должным образом с Kotlin Невозможно повторно назначить локальные переменные kotlin лямбда-выражения в качестве необязательного параметра Доступ к свойствам закрывающего класса Двусторонняя связь между устройствами Есть ли способ показать все функции расширения данного класса Kotlin в Intellij IDE? Android Kotlin: Ошибка Неразрешенная ссылка: DaggerAppComponent как управлять потоком данных, используя, когда правильно в котлин

Spring Data JPA / Hibernate "Невозможно найти атрибут с заданным именем"

У нас есть проблема с Spring Web Application и Hibernate. Это написано в Котлине. У нас есть абстрактный объект

@Inheritance(strategy = InheritanceType.JOINED) abstract @Entity class ContactLogEntry protected constructor() { @GeneratedValue @Id val id: Long = 0 @ManyToOne @JoinColumn protected lateinit var _contact: AbstractContact open val contact: AbstractContact? get() = _contact @ManyToOne protected var _user: User? = null open val user: User? get() = _user 

И некоторые из них:

 @Entity class MailLogEntry() : ContactLogEntry() { override var contact: Lead get() = super.contact as Lead set(value) { super._contact = value } override var user: Telephonist get() = super.user as Telephonist private set(value) { super._user = value } 

Обратите внимание, что «Lead» наследуется непосредственно из «AbstractContact». Проблема связана с contact свойств. Свойство User, где Telephonist наследует напрямую от пользователя, отлично работает.

Мы получаем Unable to locate Attribute with the the given name [contact] on this ManagedType (PATH to ContactLogEntry)

Мы делали это так же, как раньше, где это работает. На самом деле не знаю, что случилось.

В моем случае, используя чистую java, причиной было то, что абстрактный @MappedSuperClass определял абстрактные методы getter / setter в соответствии с интерфейсом, но не определял фактическое поле члена.

Ошибка исчезла после удаления методов getter / setter из абстрактного класса, в конце концов, им не было необходимости. НТН

Более широкая возможность заключается в том, что вы реорганизовали имя атрибута, но с несогласованностью в:

  • геттер и / или сеттер
  • @Query
  • @NamedEntityGraphs
  • @NamedQuery