首页 文章

Spring boot-JPA从现有表生成实体错误

提问于
浏览
1

我从DBA创建的现有表中生成实体类 . 表中的列不是按字母顺序排列的 . 当我启动我的应用程序时,出现以下错误消息

  • 错误信息 -

执行DDL表名时出错

数据库中已有一个名为table name的对象

--application.properties--

spring.jpa.hibernate.ddl-auto = none spring.jpa.generate-ddl = false

是否可以从现有表创建实体类,哪些列不是按字母顺序排列的?即使我设置ddl-auto = none,我的应用程序试图创建新表?


org.hibernate.tool.schema.spi.CommandAcceptanceException:在org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:)中通过JDBC语句执行DDL“create table sms.dbo.sms_data_test()”时出错 . 67)〜[hibernate-core-5.3.5.Final.jar:5.3.5.Final]在org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)[hibernate-core-5.3 . 5.Final.jar:5.3.5.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)[hibernate-core-5.3.5.Final.jar:5.3.5 . 最终]在org.hibernate.tool.schema的org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277)[hibernate-core-5.3.5.Final.jar:5.3.5.Final] .internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71)[hibernate-core-5.3.5.Final.jar:5.3.5.Final] org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration (AbstractSchemaMigrator.java:207)[hibernate-core-5.3.5.Final.jar:5.3.5.Final]在org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)[hibernate- core-5.3.5.Final.jar:5.3.5.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)[hibernate-core-5.3.5.Final.jar: 5.3.5.Final] org.hibernate的org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)[hibernate-core-5.3.5.Final.jar:5.3.5.Final] .internal.SessionFactoryImpl . (SessionFactoryImpl.java:310)[hibernate-core-5.3.5.Final.jar:5.3.5.Final] org.hibernate.boot.internal.SessionFactoryBuilderImpl .__ build(SessionFactoryBuilderImpl.java:467) org.hibernate.boot.internal.SessionFactoryBuilderImpl.build [Session @ Hibernate-core-5.3.5.Final.jar :5.3.5.Final]在org.hibernate.jpa.boot .internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939)[hibernate-core-5.3.5.Final.jar:5.3.5.Final] org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider .__ createEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java) :57)[org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:40002)[spring-orm-5.1.0.RC2.jar:5.1.0.RC2] . [spring-orm-5.1 . 0.RC2.jar:5.1.0.RC2] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean .__ createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)[spring-orm-5.1.0.RC2.jar:5.1.0.RC2]在org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:42002)[spring-orm-5.1.0.RC2.jar:5.1.0.RC2] org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory (AbstractEntityManagerFactoryBean.java:390)[spring-orm-5.1.0.RC2.jar:5.1.0.RC2] org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)[spring-orm- 5.1.0.RC2.jar:5.1.0.RC2] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)[spring-orm-5.1.0.RC2.jar:5.1.0 . RC2] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1802)[spring-beans-5.1.0.RC2.jar:5.1.0.RC2] org.springframework.beans.factory .support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1739)[spring-beans-5.1.0.RC2.jar:5.1.0.RC2] atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)[spring-beans-5.1.0.RC2.jar:5.1.0.RC2] org.springframework.beans.factory.support . 在Org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java)的AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)[spring-beans-5.1.0.RC2.jar:5.1.0.RC2] :320)[spring-beans-5.1.0.RC2.jar:5.1.0.RC2] org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)~ [spring-beans-5.1 .0.RC2.jar:5.1.0.RC2] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)[spring-beans-5.1.0.RC2.jar:5.1.0 .RC2] org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)[spring-beans-5.1.0.RC2.jar:5.1.0.RC2] org.springframework.context . support.Abstrac tApplicationContext.getBean(AbstractApplicationContext.java:1085)〜[spring-context-5.1.0.RC2.jar:5.1.0.RC2]在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:855)〜 [spring-context-5.1.0.RC2.jar:5.1.0.RC2]在org.springframework.context.support.AbstractApplicationContext .__ refresh(AbstractApplicationContext.java:548)〜[spring-context-5.1.0.RC2 . jar:5.1.0.RC2] org.springframework.context.support.AbstractApplicationContext.jrLockAndRefresh(AbstractApplicationContext.java:40002)~ [spring-context-5.1.0.RC2.jar:5.1.0.RC2] at org . springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:41008)〜[spring-context-5.1.0.RC2.jar:5.1.0.RC2] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext .refresh(ServletWebServerApplicationContext.java:140)〜[spring-boot-2.1.0.M2.jar:2.1.0.M2] org.springframework.boot.SpringApplication.refresh(SpringApplicat) ion.java:785)~ [spring-boot-2.1.0.M2.jar:2.1.0.M2] org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:418)〜[spring-boot-2.1 .0.M2.jar:2.1.0.M2]在org.springframework.boot.SpringApplication.run(SpringApplication.java:337)〜[spring-boot-2.1.0.M2.jar:2.1.0.M2]在org.springframework.boot.SpringApplication.run(SpringApplication.java:1269)〜[spring-boot-2.1.0.M2.jar:2.1.0.M2] org.springframework.boot.SpringApplication.run(SpringApplication . java:1257)〜[spring-boot-2.1.0.M2.jar:2.1.0.M2] at com.kr.dhl.EPassportApplication.main(EPassportApplication.java:25)〜[classes /:na]引起的:com.microsoft.sqlserver.jdbc.SQLServerException:数据库中已存在名为“sms_data_test”的对象 . at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217)〜[sqljdbc42-4.2.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1655)~ [ sqljdbc42-4.2.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:885)〜[sqljdbc42-4.2.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerStatement $ StmtExecCmd . doExecute(SQLServerStatement.java:778)〜[sqljdbc42-4.2.jar:na] at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)〜[sqljdbc42-4.2.jar:na] at com . microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)〜[sqljdbc42-4.2.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:191)~ [sqljdbc42-4.2 .jar:na] at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:166)~ [sqljdbc42-4.2.jar:na] at com.microsoft.sqlserver.jdbc.SQLServerStatemen t.execute(SQLServerStatement.java:751)~ [sqljdbc42-4.2.jar:na] at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95)〜[HikariCP-3.2.0.jar:na ]在com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)〜[HikariCP-3.2.0.jar:na] org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java) :54)〜[hibernate-core-5.3.5.Final.jar:5.3.5.Final] ...省略了39个常用帧

  • http://maven.apache.org/xsd/maven-4.0.0.xsd“> 4.0.0
<groupId>com.example</groupId>
<artifactId>webservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>webservice</name>
<description>webservice Java-SpringBoot version</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.0.M2</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</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-thymeleaf</artifactId>
    </dependency>

    <dependency>
        <groupId>nz.net.ultraq.thymeleaf</groupId>
        <artifactId>thymeleaf-layout-dialect</artifactId>
    </dependency>

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

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter-test</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency> -->

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc42</artifactId>
        <version>4.2</version>
        <scope>runtime</scope>
    </dependency> 

    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-apt</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.modelmapper</groupId>
        <artifactId>modelmapper</artifactId>
        <version>2.2.0</version>
    </dependency>




</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- ADDED FOR Querydsl -->
        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/java</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

spring.jpa.database = SQL服务器

spring.jpa.hibernate.ddl-auto = none spring.jpa.generate-ddl = false

spring.jpa.show-SQL =真

最诚挚的问候,JH

1 回答

  • 2

    只有 spring.jpa.hibernate.ddl-auto=none 应该工作,它不会创建表,因为它可以有诸如create,update,none之类的值,无意义无关自动更新/创建/删除

    如果您没有按字母顺序排列,只要它与您的实体匹配就可以了 .

    UPDATE

    第1步:如果您没有使用多个数据源,请删除mysql连接器

    <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    

    第2步:添加以下属性以连接MS SQL . (替换您的数据库,用户,传递,端口)

    spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springbootdb
    spring.datasource.username=sa
    spring.datasource.password=Projects@123
    spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
    spring.jpa.show-sql=true
    spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
    spring.jpa.hibernate.ddl-auto = none
    

相关问题