java.sql.SQLException: таблица 'myTable.owner' не существует - PullRequest
0 голосов
/ 28 марта 2019

Я использую JPA для создания и доступа к базе данных. Моя база данных состоит из двух таблиц? Эти две таблицы имеют отношение @OneToMany. Однако, когда я запускаю свое приложение, я получаю java.sql.SQLException.

Я провел некоторые исследования, но ни одно из решений в Интернете, похоже, не работает для меня. Первое решение предлагает заменить @GeneratedValue(strategy=GenerationType.AUTO) на @GeneratedValue(strategy=GenerationType.IDENTITY)

Второе решение состоит из включения spring.jpa.hibernate.use-new-id-generator-mappings=false в application.properties.

Ни одно из этих решений не сработало.

Car.java

@Entity
public class Car {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;

        ....

    @ManyToOne(fetch = FetchType.LAZY )
    @JoinColumn(name = "owner")

    private Owner owner;

        ....

}

Owner.java

@Entity
public class Owner {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long ownerid;

        ....

    @OneToMany(cascade =CascadeType.ALL, mappedBy="owner")
    private List<Car> cars;

        ....
}

application.properties

logging.level.root=INFO
server.port=8080
spring.jpa.show-sql=true

spring.datasource.url=jdbc:mariadb://localhost:3306/cardb
spring.datasource.username=****
spring.datasource.password=*******
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

spring.jpa.generate-dll=true
spring.jpa.hibernate.dll-auto=create-drop

Вот Exception Я получаю:

java.sql.SQLException: Table 'cardb.owner' doesn't exist

РЕДАКТИРОВАТЬ: Я использую MariaDB и база данных называется cardb. Поэтому, когда я запускаю приложение, оно должно создавать cardb.car, cardb.owner и cardb.car_owner

Кстати, база данных правильно создается при использовании H2. Означает ли это, что проблема исходит от MariaDB?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я думаю, что вам не хватает @Table в ваших классах сущностей.

Определите Car как,

@Entity
@Table (name="car")
public class Car {
...
}

и

Владелец, как показано ниже,

@Entity
@Table (name = "owner")
public class Owner {
...
}
0 голосов
/ 28 марта 2019

@ JoinColumn (name = "owner") должно быть @JoinColumn (name = "ownerid")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...