J'ai une application SpringBoot 2.0.1.RELEASE utilisant les données de printemps/jpa
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Mais lorsque je fais une mise à jour dans la base de données Amazon Aurora, j'ai l'erreur suivante:
2018-04-13 09:20 [pool-1-thread-1] ERREUR o.h.id.enhanced.TableStructure.execute (148) - impossible de lire une valeur hi com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: la table 'elbar.hibernate_sequence' n'existe pas chez Sun.reflect.NativeConstructorAccessorImpl.newInstance0 (méthode native)
J'ai ceci dans l'entité que je veux sauver
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
Je voudrais aussi éviter tout inconvénient dans la base de données pour récupérer l'ID.
Avec la génération GenerationType.AUTO
, hibernate recherchera la table hibernate_sequence
par défaut. Changez donc la génération en IDENTITY
comme ci-dessous:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
Juste au cas où vous migriez depuis une version de démarrage de prévisualisations:
définir ce qui suit dans application.yml
empêchera hibernate de rechercher des entrées hibernate_sequence
.
spring.jpa.hibernate.use-new-id-generator-mappings
C'était la valeur par défaut dans Boot 1.x
Ajoutez la configuration suivante dans votre application.yml:
spring:
jpa:
hibernate:
use-new-id-generator-mappings: false
Ou ceci si vous utilisez application.properties
spring.jpa.hibernate.use-new-id-generator-mappings= false