#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?