• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring Data nie jest w stanie zresetować tabeli.

0 głosów
440 wizyt
pytanie zadane 18 marca 2020 w Java przez Krab789 Nowicjusz (170 p.)

Hej, mam problem w moim basicowym rest api. Spring twierdzi że moja tabela istnieje i nie może utworzyć nowej. Co więcej, nie może jej zresetować, ponieważ ona od czegoś zależy. Problem pojawia się odkąd mój model zawiera pole, które jest stworzonym przeze mnie obiektem. Nagle dostaje ogrom błędów. Proszę o pomoc bo nawet na stackoverflow nie widzę odpowiedzi na mój problem. Dzięki z góry
 

import javax.persistence.*;
import java.time.LocalDate;


@Entity
@Table(name = "cassets_table")
public class VideoCasset {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Long id;
    private String title;
    private LocalDate productionYear;
    @ManyToOne
    private Genre genre;

    public VideoCasset() {
    }

    public VideoCasset(String title, LocalDate productionYear, Genre genre) {
        this.title = title;
        this.productionYear = productionYear;
        this.genre = genre;
    }

    public Genre getGenre() {
        return genre;
    }

    public void setGenre(Genre genre) {
        this.genre = genre;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public LocalDate getProductionYear() {
        return productionYear;
    }

    public void setProductionYear(LocalDate productionYear) {
        this.productionYear = productionYear;
    }
}
import javax.persistence.*;

@Entity
@Table(name = "genres_table")
public class Genre {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    public Long id;
    public String title;
    public String description;

    public Genre() {
    }

    public Genre(String title, String description) {
        this.title = title;
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

I metoda 

@PostMapping
public VideoCasset addCassett(@RequestBody CassetCreator cassetCreator) {
    String title = cassetCreator.getTitle();
    LocalDate data = LocalDate.parse(cassetCreator.getData());
    String genreName = cassetCreator.getGenre();
    Genre genre = genreManager.findByTitle(genreName);
    VideoCasset videoCasset = new VideoCasset(title, data, genre);
    return cassetVideos.save(videoCasset);
}

application.properties

server.port=8084
spring.jpa.properties.hibernate.ddl-auto=update
spring.datasource.url=jdbc:h2:file:./db12
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

Ponieważ post by był zbyt długi jakbym umieścił cały stack trace, najważniejsze punkty to:

2020-03-18 19:40:40.817  WARN 2872 --- [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "drop table genres_table if exists" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table genres_table if exists" via JDBC Statement
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Nie można skasować "GENRES_TABLE" ponieważ zależy od "FK3DREYMM74D126C9ACXU3RVNTW, FK1Q9LQREWC88RNCU68SQMXAGCQ"
Cannot drop "GENRES_TABLE" because "FK3DREYMM74D126C9ACXU3RVNTW, FK1Q9LQREWC88RNCU68SQMXAGCQ" depends on it; SQL statement:
drop table genres_table if exists [90107-200]
2020-03-18 19:40:40.824  WARN 2872 --- [           main] o.h.t.s.i.ExceptionHandlerLoggedImpl     : GenerationTarget encountered exception accepting command : Error executing DDL "create table genres_table (id bigint generated by default as identity, description varchar(255), title varchar(255), primary key (id))" via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table genres_table (id bigint generated by default as identity, description varchar(255), title varchar(255), primary key (id))" via JDBC Statement
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabela "GENRES_TABLE" już istnieje
Table "GENRES_TABLE" already exists; SQL statement:
create table genres_table (id bigint generated by default as identity, description varchar(255), title varchar(255), primary key (id)) [42101-200]


 

komentarz 18 marca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
spring.jpa.properties.hibernate.ddl-auto=create-drop 

lub

spring.jpa.properties.hibernate.ddl-auto=create
komentarz 18 marca 2020 przez Krab789 Nowicjusz (170 p.)
próbowałem, nic a nic nie działa

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 27 kwietnia 2017 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 621 wizyt
pytanie zadane 19 maja 2017 w Java przez K0XM4N Gaduła (3,640 p.)
0 głosów
2 odpowiedzi 1,138 wizyt
pytanie zadane 29 września 2019 w Java przez heartagram Obywatel (1,770 p.)

93,758 zapytań

142,716 odpowiedzi

323,363 komentarzy

63,355 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...