Wpis z mikrobloga

#java #spring #hibernate #programowanie
Mirki, dostaje przy uruchamianiu aplikacji warning, że @SequenceGenerator jest deprecated i mam użyć SequenceStyleGenerator

use org.hibernate.id.enhanced.SequenceStyleGenerator instead.


Doczytałem, że żeby używać nowych generatorów wystarczy w konfiguracje hibernate ustawić:
hibernate.id.newgeneratormappings na true. Ustawiając to wszystko działa ok, nie mam warninga.

W dokumentacji doczytałem, że mogą być problemy z kompatybilnością wsteczną:

We recommend all new projects to use hibernate.id.newgeneratormappings=true as the new generators are more efficient and closer to the JPA 2 specification semantic. However they are not backward compatible with existing databases (if a sequence or a table is used for id generation).


Czy wiecie co może nie działać dodając moje zmiany? Nie potrafię znaleźć informacji. U mnie wszystko działa, testy przechodzą, ale wolałbym mieć pewność

Z góry dzięki
  • 4
@mariusz-laszczka: Problem może być tylko wtedy jeśli aplikacja była już uruchomiona wcześniej a na bazie znajdują się wygenerowane przez nią dane. W testach nic nie wyjdzie jeśli stawiasz za każdym razem nową, czystą bazę.
@assess: Dokładnie, w testach używam h2, wiec nic mi to nie da. NA produkcji - oracle. Nie jestem tego w stanie inaczej sprawdzić. Szukałem informacji co dokładnie jest niekompatybilne, ale niestety nie znalazłem.
Moja aplikacja ma najzwyklejsze klasy @Entity z @GeneratedValue Long id + jedną klasę z @SequenceGenerator - która jest używana tylko w testach. Wydaję mi się, że nie powinno być problemu, ale chciałem się upewnić
@mariusz-laszczka: możesz przeprowadzić testy na zanonimizowanym backupie bazy prod. Ogólnie taka migracja nie jest zalecana, ze względu na użycie innych algorytmów przez hibernate do wyliczania wartości ID przez co mogą być problemy z powtarzającymi się wartościami -> unique constraint violation.