Подтвердить что ты не робот

Как заменить устаревший MultipleHiLoPerTableGenerator с помощью TableGenerator в спящем режиме

Я использую hibernate в приложении с spring boot 1.4.0.RELEASE.

Объект для индекса выглядит примерно так:

@Entity(name = "SearchableTariffItem")
@Indexed
public class SearchableTariffItem {
    public static final String ZIFFER_ANALYZER_NAME = "ZIFFER_ANALYZER";

    @GeneratedValue(strategy = GenerationType.TABLE)
    @Id
    private Long id;
    ...
}

Теперь я получаю следующее предупреждение, когда я сохраняю объект в первый раз:

2016-08-26 15:08:32.501 WARN 8476 — [apr-8080-exec-6] org.hibernate.orm.deprecation : HHH90000015: Found use of deprecated [org.hibernate.id.MultipleHiLoPerTableGenerator] table-based id generator; use org.hibernate.id.enhanced.TableGenerator instead. See Hibernate Domain Model Mapping Guide for details.

К сожалению, я не знаю, где я могу настроить свое приложение (желательно в application.yml), чтобы использовать класс TableGenerator.

Я использую следующую зависимость:

  • Hibernate core 5.0.9.Final
  • Поиск в спящем режиме ORM 5.5.1.Final
  • Lucene 5.3.1
4b9b3361

Ответ 1

Свойством, которое управляет этим поведением в Hibernate, является hibernate.id.new_generator_mappings, для которого по умолчанию используется значение Hibernate 5 → , что означает, что новый TableGenerator будет использоваться вместо устаревшего MultipleHiLoPerTableGenerator.

Spring Boot однако по умолчанию это свойство имеет значение false, что означает, что будет использоваться старый генератор, если вы явно не скажете, что хотите новый. Вам нужно установить свойство spring.jpa.hibernate.use-new-id-generator-mappings на true, чтобы получить TableGenerator.

См. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes#generator-mappings