java.sql.SQLException:表'myTable.owner'不存在

时间:2019-03-28 13:29:28

标签: java spring-boot

我正在使用JPA创建和访问数据库。我的数据库由两个表组成?这两个表具有@OneToMany关系。但是,当我运行我的应用程序时,我得到了java.sql.SQLException

我已经进行了一些研究,但在线解决方案似乎都不适合我。第一种解决方案建议将@GeneratedValue(strategy=GenerationType.AUTO)替换为@GeneratedValue(strategy=GenerationType.IDENTITY)

第二个解决方案包括在application.properties中包含spring.jpa.hibernate.use-new-id-generator-mappings=false

这些解决方案均无效。

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.carcardb.ownercardb.car_owner

顺便说一句,使用H2时可以正确创建数据库。这是否意味着问题来自MariaDB?

2 个答案:

答案 0 :(得分:0)

@JoinColumn(name =“ owner”) 应该 @JoinColumn(name =“ ownerid”)

答案 1 :(得分:0)

我认为您在实体类中缺少@Table

将汽车定义为

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

所有者如下,

@Entity
@Table (name = "owner")
public class Owner {
...
}