wake-up-neo.net

Die Tabelle 'DBNAME.hibernate_sequence' ist nicht vorhanden

Ich habe eine SpringBoot 2.0.1.RELEASE-Anwendung mit Spring Data/jpa

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Wenn ich jedoch ein Update in der Amazon Aurora DB durchführe, habe ich folgende Fehlermeldung erhalten:

2018-04-13 09:20 [pool-1-thread-1] FEHLER o.h.id.enhanced.TableStructure.execute (148) - konnte keinen Hi-Wert lesen com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Die Tabelle 'elbar.hibernate_sequence' existiert nicht um Sun.reflect.NativeConstructorAccessorImpl.newInstance0 (native Methode)

Ich habe das in der Entität, die ich speichern möchte

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

Ich möchte auch jeden Nachteil in der DB vermeiden, um die ID abzurufen.

4
en Peris

Bei der Generierung GenerationType.AUTO hibernate wird nach der Standard-hibernate_sequence-Tabelle gesucht. Ändern Sie daher die Generierung in IDENTITY wie folgt:

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long id;
14
Springer F

Nur für den Fall, dass Sie von einer Vorschau-Boot-Version migrieren:

wenn Sie in Ihrem application.yml Folgendes einstellen, wird verhindert, dass der Ruhezustand nach hibernate_sequence-Einträgen sucht.

spring.jpa.hibernate.use-new-id-generator-mappings

Das war der Standard in Boot 1.x

4
Laures

JPA und Auto-DDL

Wenn ich auf Mapping-Konflikte zwischen einem Tabellenschema und einer Java Entität stoße, mache ich gerne Folgendes.

  1. Löschen Sie das Schema
  2. Ergänzen Sie die spring.jpa.hibernate.ddl-auto=create Eigenschaft zu application.properties
  3. Starten Sie Ihre Anwendung neu

Dadurch wird das Schema basierend auf Ihrer Entität neu erstellt. Anschließend können Sie die erstellte Tabelle mit Ihrem alten Schema vergleichen, um ggf. den Unterschied festzustellen.

Warnung: Dadurch werden die Daten in allen Tabellen abgeschnitten, die in Ihrer Anwendung als Entitäten angegeben sind

1
Chris Maggiulli

Fügen Sie in Ihrer application.yml die folgende Konfiguration hinzu:

spring: jpa: hibernate: use-new-id-generator-mappings: false

Oder dies, wenn Sie application.properties verwenden

spring.jpa.hibernate.use-new-id-generator-mappings= false

0
Neikat