Правильное расширение объекта пользователя в режиме Гибернации5

#java #hibernate #spring-data-jpa #jhipster

#java #переход в спящий режим #spring-data-jpa #jhipster

Вопрос:

Я обновляю приложение JHipster, написанное с использованием Hibernate4, до Hibernate5.

Версия Hibernate4 отлично работает в рабочей среде, но я хочу перейти на гораздо более новую версию Spring Boot, которая также означает Hibernate5.

Я столкнулся с некоторыми проблемами с запросами в Hibernate5 и был бы признателен за дополнительные наблюдения, чтобы подтвердить, что я правильно обновил таблицы с правильным синтаксисом Hibernate.

 // base Entity
@Entity
@Table(name = "jhi_user")
public class User extends AbstractAuditingEntity implements Serializable {
  // default JHipster generated attributes
}

// additional User attributes
@Entity
public class Foo extends User {
  // some extra attributes, but no "Id" field since it extends User
  
  private String attribute1;
  private String attribute2;
}

// another Entity inheriting from Foo
@Entity
public class Bar extends Foo {
   private String attribute3;
   private String attribute4;
}
  

Когда я пытаюсь использовать UserRepository , чтобы найти User учетную запись для аутентификации, я получаю много неприятностей от Hibernate. Я думаю, что эта структура отношений больше не действительна для Hibernate5, но не уверен, что делать.

Обновление: я нашел эту статью —https://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html

Обновление # 2: Автор этой статьи фактически собрал образец проекта, который я связываю для всех, кто еще оказался в этой кроличьей норе. https://github.com/Paul-Etienne/jhipster-userextra-example — однако в нем отсутствуют несколько ключевых элементов (ИМХО), таких как обновление поля UserExtra.phone. в каком репозитории мне найти пользователя, чтобы ссылаться на другого?

Обновление # 3: Хотя я знаю о @MappedSuperClass , в моем конкретном случае это не вариант, поскольку я работаю с базой данных, в которой уже сохраняются данные базового объекта.

Обновление # 4: если версии здесь «вещь», я запускаю Spring Boot 2.2.7.RELEASE и Hibernate 5.4.15.Final

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

Комментарии:

1. готово — надеюсь, это поможет

2. еще раз спасибо — да, у меня есть. Версии, обновленные в вопросе. : лук:

3. Ну, ваша проблема действительно не связана с jhipster, речь идет о jpa hibernate spring data. Не пытайтесь следовать тому, что вы нашли о JHipster. потому что теперь ваше приложение живет само по себе. У ваших 2 других объектов Foo и Bar нет табличной аннотации, поэтому не могли бы вы указать, какую стратегию сопоставления наследования вы выбрали. Вы сказали, что работаете с устаревшей схемой БД, но не даете никаких подробностей об этом. Вы следовали инструкциям по обновлению (если таковые имеются) из Hibernate и Spring Boot?