java 创建名为“entityManagerFactory”的Bean时出错架构验证:缺失表

bwitn5fc  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(122)

我不能以任何方式摆脱这个错误。我想使用Hibernate创建一个表。但它给了我这个错误,没有这样的表。但毕竟,他必须创建它,因为它不存在。我会很高兴任何提示。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [order]
Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [order]
aused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [order]

我使用应用程序.yaml

spring:
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: true
  datasource:
    url: jdbc:postgresql://localhost:5432/shop
    username: postgres
    password: 1111
  flyway:
    baseline-on-migrate: true

这里也是我的代码pom.xml,听说这个错误可能和flywaydb有关,但是我没有找到具体的解决方法

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>TestTaskShop</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>TestTaskShop</name>
    <description>TestTaskShop</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity6</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
7eumitmz

7eumitmz1#

如果你想从Hibernate中创建表,你应该在www.example.com文件中传递hibernate属性application.properties。

spring.datasource.url=jdbc:mysql://localhost:3306/local
spring.datasource.username=root
spring.datasource.password=welcome
spring.jpa.database=MYSQL
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.flyway.validate-on-migrate=false

1.如果你想从你定义的实体创建新的表,你可以使用spring.jpa.hibernate.ddl-auto的create属性,例如spring.jpa.hibernate.ddl-auto=create
1.对于更新/更改表,使用update,例如spring.jpa.hibernate.ddl-auto=update
1.为了验证所有的表都是用spring.jpa.hibernate.ddl-auto=validate创建的
1.如果你想在应用程序启动时创建和删除表,例如spring.jpa.hibernate.ddl-auto=create-drop

相关问题