简体   繁体   English

spring.jpa.hibernate.ddl-auto = create在带有SpringBoot 2.0的Hibernate 5中不起作用

[英]spring.jpa.hibernate.ddl-auto=create is not working in Hibernate 5 with SpringBoot 2.0

I created a SpringBoot 1.5.11.RELEASE and Hibernate 5 project . 我创建了一个SpringBoot 1.5.11.RELEASEHibernate 5 project Everything was working fine. 一切都很好。

However, when I changed SpringBoot version to 2.0.0.RELEASE the spring.jpa.hibernate.ddl-auto=create does not work. 但是,当我将SpringBoot版本更改为2.0.0.RELEASEspring.jpa.hibernate.ddl-auto=create不起作用。 I have tried this stackoverflow post , but no luck. 我已经尝试过这个stackoverflow帖子 ,但是没有运气。

Here is the stack trace of SpringBoot 1.5.11.RELEASE : 这是SpringBoot 1.5.11.RELEASE的堆栈跟踪:

2018-04-06 16:27:52.512 INFO 6792 --- [ main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default' 2018-04-06 16:27:52.526 INFO 6792 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [ name: default ...] 2018-04-06 16:27:52.587 INFO 6792 --- [ main] org.hibernate.Version 2018-04-06 16:27:52.512 INFO 6792 --- [main] j.LocalContainerEntityManagerFactoryBean:为持久性单元'default'构建JPA容器EntityManagerFactory 2018-04-06 16:27:52.526 INFO 6792 --- [main] o.hibernate.jpa.internal.util.LogHelper:HHH000204:处理PersistenceUnitInfo [名称:默认...] 2018-04-06 16:27:52.587 INFO 6792 --- [main] org.hibernate.Version
: HHH000412: Hibernate Core {5.0.12.Final} 2018-04-06 16:27:52.589 INFO 6792 --- [ main] org.hibernate.cfg.Environment :HHH000412:Hibernate Core {5.0.12.Final} 2018-04-06 16:27:52.589 INFO 6792 --- [main] org.hibernate.cfg.Environment
: HHH000206: hibernate.properties not found 2018-04-06 16:27:52.591 INFO 6792 --- [ main] org.hibernate.cfg.Environment :HHH000206:找不到hibernate.properties 2018-04-06 16:27:52.591信息6792 --- [main] org.hibernate.cfg.Environment
: HHH000021: Bytecode provider name : javassist 2018-04-06 16:27:52.735 INFO 6792 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 2018-04-06 16:27:52.833 INFO 6792 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 2018-04-06 16:27:53.180 INFO 6792 --- [ main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export Hibernate: drop table if exists person Hibernate: create table person (id integer not null auto_increment, name varchar(255), primary key (id)) 2018-04-06 16:27:53.619 INFO 6792 --- [ :HHH000021:字节码提供者名称:javassist 2018-04-06 16:27:52.735 INFO 6792 --- [main] o.hibernate.annotations.common.Version:HCANN000001:Hibernate Commons Annotations {5.0.1.Final} 2018- 04-06 16:27:52.833 INFO 6792--[main] org.hibernate.dialect.Dialect:HHH000400:使用方言:org.hibernate.dialect.MySQL5Dialect 2018-04-06 16:27:53.180 INFO 6792- -[main] org.hibernate.tool.hbm2ddl.SchemaExport:HHH000227:运行hbm2ddl模式导出Hibernate:删除表(如果存在的话)Hibernate:创建表的人(ID整数不为null auto_increment,名称varchar(255),主键(id) )2018-04-06 16:27:53.619信息6792 --- [
main] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete 2018-04-06 16:27:53.646 INFO 6792 --- [ 主要] org.hibernate.tool.hbm2ddl.SchemaExport:HHH000230:模式导出完成2018-04-06 16:27:53.646信息6792 --- [
main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' SessionFactory Created 2018-04-06 16:27:54.528 WARN 6792 --- [ main] org.hibernate.orm.connections : HHH10001002: Using Hibernate built-in connection pool (not for production use!) 2018-04-06 16:27:54.529 INFO 6792 --- [ main] org.hibernate.orm.connections : HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/hotel] 2018-04-06 16:27:54.529 INFO 6792 --- [ main] org.hibernate.orm.connections : HHH10001001: Connection properties: {user=root, password=****} 2018-04-06 16:27:54.529 INFO 6792 --- [ main] org.hibernate.orm.connections : HHH10001003: Autocommit mode: false 2018-04-06 16:27:54.532 INFO 6792 --- [ main] .ciDriverManagerConnectionProviderImpl : HHH000115: Hibernate connection pool size: 10 (min=1) 2018-04-06 16:27:54.539 INFO 6792 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dia main] j.LocalContainerEntityManagerFactoryBean:为持久性单元“ default”建立的JPA EntityManagerFactory SessionFactory创建于2018-04-06 16:27:54.528 WARN 6792 --- [main] org.hibernate.orm.connections:HHH10001002:使用内置的Hibernate连接池(不适用于生产!)2018-04-06 16:27:54.529信息6792 --- [main] org.hibernate.orm.connections:HHH10001005:在URL使用驱动程序[com.mysql.jdbc.Driver] [jdbc:mysql:// localhost:3306 / hotel] 2018-04-06 16:27:54.529信息6792 --- [main] org.hibernate.orm.connections:HHH10001001:连接属性:{user = root,password = ****} 2018-04-06 16:27:54.529 INFO 6792 --- [main] org.hibernate.orm.connections:HHH10001003:自动提交模式:false 2018-04-06 16:27:54.532 INFO 6792 --- [main] .ciDriverManagerConnectionProviderImpl:HHH000115:休眠连接池大小:10(min = 1)2018-04-06 16:27:54.539 INFO 6792 --- [main] org.hibernate.dialect.Dialect:HHH000400:使用方言:org.hibernate.dialect.MySQL5Dia lect 2018-04-06 16:27:54.855 INFO 6792 --- [ main] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup Hibernate: insert into person (name) values (?) Saved!! lect 2018-04-06 16:27:54.855信息6792 --- [main] osjeaAnnotationMBeanExporter:在启​​动Hibernate时为JMX暴露注册bean:插入人员(名称)值(?)已保存! 2018-04-06 16:27:54.954 INFO 6792 --- [ main] com.hib.Hibernate5Application : Started Hibernate5Application in 4.051 seconds (JVM running for 4.802) 2018-04-06 16:27:54.954信息6792 --- [main] com.hib.Hibernate5Application:在4.051秒内启动了Hibernate5Application(JVM运行4.802)


Here is the stack trace of SpringBoot 2.0.0.RELEASE : 这是SpringBoot 2.0.0.RELEASE的堆栈跟踪:

SessionFactory Created 2018-04-06 16:24:17.011 INFO 5092 --- [ SessionFactory创建于2018-04-06 16:24:17.011信息5092 --- [
main] org.hibernate.Version : HHH000412: Hibernate Core {5.2.14.Final} 2018-04-06 16:24:17.013 INFO 5092 --- [ main] org.hibernate.Version:HHH000412:Hibernate Core {5.2.14.Final} 2018-04-06 16:24:17.013 INFO 5092 --- [
main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found 2018-04-06 16:24:17.915 INFO 5092 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 2018-04-06 16:24:17.989 WARN 5092 --- [ main] org.hibernate.orm.connections.pooling : HHH10001002: Using Hibernate built-in connection pool (not for production use!) 2018-04-06 16:24:17.994 INFO 5092 --- [ main] org.hibernate.orm.connections.pooling : HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/hotel] 2018-04-06 16:24:17.994 INFO 5092 --- [ main] org.hibernate.orm.connections.pooling : HHH10001001: Connection properties: {user=root, password=****} 2018-04-06 16:24:17.994 INFO 5092 --- [ main] org.hibernate.orm.connections.pooling : HHH10001003: Autocommit mode: false 2018-04-06 16:24:17.996 INFO 5092 --- [ main] .ciDriverManagerConnectionProviderImpl : HHH000115: Hibernate connection pool size: 10 (min=1) main] org.hibernate.cfg.Environment:HHH000206:hibernate.properties not found 2018-04-06 16:24:17.915 INFO 5092 --- [main] o.hibernate.annotations.common.Version:HCANN000001:Hibernate Commons Annotations {5.0.1.Final} 2018-04-06 16:24:17.989 WARN 5092 --- [main] org.hibernate.orm.connections.pooling:HHH10001002:使用Hibernate内置连接池(不适用于生产! )2018-04-06 16:24:17.994信息5092--[main] org.hibernate.orm.connections.pooling:HHH10001005:使用URL [jdbc:mysql:/上的驱动程序[com.mysql.jdbc.Driver] / localhost:3306 / hotel] 2018-04-06 16:24:17.994 INFO 5092 --- [main] org.hibernate.orm.connections.pooling:HHH10001001:连接属性:{user = root,password = *** *} 2018-04-06 16:24:17.994 INFO 5092 --- [main] org.hibernate.orm.connections.pooling:HHH10001003:自动提交模式:false 2018-04-06 16:24:17.996 INFO 5092- -[main] .ciDriverManagerConnectionProviderImpl:HHH000115:休眠连接池大小:10(最小= 1)

2018-04-06 16:24:18.230 INFO 5092 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 2018-04-06 16:24:19.041 INFO 5092 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2018-04-06 16:24:19.058 INFO 5092 --- [ 2018-04-06 16:24:18.230 INFO 5092 --- [main] org.hibernate.dialect.Dialect:HHH000400:使用方言:org.hibernate.dialect.MySQL5Dialect 2018-04-06 16:24:19.041 INFO 5092 --- [main] com.zaxxer.hikari.HikariDataSource:HikariPool-1-开始... 2018-04-06 16:24:19.058 INFO 5092 --- [
main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. main] com.zaxxer.hikari.HikariDataSource:HikariPool-1-开始完成。

2018-04-06 16:24:19.419 INFO 5092 --- [ main] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-04-06 16:24:19.420 INFO 5092 --- [ 2018-04-06 16:24:19.419 INFO 5092 --- [main] osjeaAnnotationMBeanExporter:在启​​动时注册JMX暴露的bean 2018-04-06 16:24:19.420 INFO 5092 --- [
main] osjeaAnnotationMBeanExporter : Bean with name 'dataSource' has been autodetected for JMX exposure 2018-04-06 16:24:19.427 INFO 5092 --- [ main] osjeaAnnotationMBeanExporter : Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] 2018-04-06 16:24:19.441 INFO 5092 --- [ main] com.hib.Hibernate5Application : Started Hibernate5Application in 3.742 seconds (JVM running for 4.541) Hibernate: insert into person (name) values (?) Saved!! [main] osjeaAnnotationMBeanExporter:已自动检测到名称为“ dataSource”的Bean以进行JMX暴露2018-04-06 16:24:19.427 INFO 5092 --- [main] osjeaAnnotationMBeanExporter:位于MBean的“ dataSource”:向JMX服务器注册为MBean [com] .zaxxer.hikari:name = dataSource,type = HikariDataSource] 2018-04-06 16:24:19.441 INFO 5092 --- [main] com.hib.Hibernate5Application:在3.742秒内启动Hibernate5Application(JVM运行4.541)Hibernate:插入到人(名字)中的值(?)已保存!


Hibernate 5 configuration : Hibernate 5配置:

@Configuration
public class HinernateConfig {

    private StandardServiceRegistry standardServiceRegistry;
    private SessionFactory sessionFactory;

    @Bean
    public SessionFactory sessionFactory() {
        try {
            standardServiceRegistry = new StandardServiceRegistryBuilder().configure().build();
            Metadata metadata = new MetadataSources(standardServiceRegistry).getMetadataBuilder().build();
            sessionFactory =  metadata.getSessionFactoryBuilder().build();
            return sessionFactory;
        } catch (Exception e) {
            System.out.println("Exception occured while creating SessionFactory");
            e.printStackTrace();
            if (standardServiceRegistry != null) {
                StandardServiceRegistryBuilder.destroy(standardServiceRegistry);
            }
        }
        return sessionFactory;
    }

    @PostConstruct
    public void post() {
        System.out.println("SessionFactory Created");
    }

}

Main application : 主要用途:

@SpringBootApplication
public class Application implements CommandLineRunner {

    private SessionFactory sessionFactory;

    public Application(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        Person person = new Person("Mehraj Malik");
        session.save(person);
        System.out.println("Saved!!");
        session.getTransaction().commit();
        session.close();
    }
}

Hibernate Xml config Hibernate Xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hotel</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">admin</property>
        <property name="hibernate.connection.pool_size">10</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <mapping class="com.hib.entity.Person"/>
    </session-factory>
</hibernate-configuration>

application.properties

spring.datasource.url = jdbc:mysql://localhost:3306/Hotel
spring.datasource.username=root
spring.datasource.password=admin
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true

In Boot 2.0 stack trace the below part does not appear : 在Boot 2.0堆栈跟踪中,以下部分没有出现:

Running hbm2ddl schema export Hibernate: drop table if exists person Hibernate: create table person (id integer not null auto_increment, name varchar(255), primary key (id)) 运行hbm2ddl模式导出休眠:如果存在人员则删除表休眠:创建表人员(ID整数不为null auto_increment,名称varchar(255),主键(id))

Github : https://github.com/Mehraj123/Hib5Boot2.0 GitHub: https : //github.com/Mehraj123/Hib5Boot2.0

As mentioned by M.Deinum I've deleted the following classes and resource file and it works : 正如M.Deinum所提到的,我已经删除了以下类和资源文件,并且可以正常工作:

  • HinernateConfig HinernateConfig
  • hibernate.cfg.xml hibernate.cfg.xml

And changes in Main application 以及主要应用的变化

@SpringBootApplication
public class Hibernate5Application implements CommandLineRunner {

    private EntityManagerFactory managerFactory;

    public Hibernate5Application(EntityManagerFactory managerFactory) {
        this.managerFactory = managerFactory;
    }

    public static void main(String[] args) {
        SpringApplication.run(Hibernate5Application.class, args);
    }

    @Override
    @Transactional
    public void run(String... args) throws Exception {
        EntityManager entityManager = managerFactory.createEntityManager();
        entityManager.getTransaction().begin();
        Person person = new Person("Mehraj Malik");
        entityManager.persist(person);
        System.out.println("Saved!!");
        entityManager.close();
    }
}

I've updated my github repo 我已经更新了我的github仓库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在springboot启动期间验证“ spring.jpa.hibernate.ddl-auto” - Validate “spring.jpa.hibernate.ddl-auto” during springboot startup spring.jpa.hibernate.ddl-auto=更新在 Z2A2D5925E6ED9AB134D636 中不起作用 - spring.jpa.hibernate.ddl-auto=update not working in spring boot Spring JPA spring.jpa.hibernate.ddl-auto:create ORA-02000:缺少ALWAYS关键字 - Spring jpa spring.jpa.hibernate.ddl-auto:create ORA-02000: missing ALWAYS keyword “spring.jpa.hibernate.ddl-auto”属性用于迁移? - "spring.jpa.hibernate.ddl-auto" property is used for migration? spring.jpa.hibernate.ddl-auto = update mariadb无法自动创建数据库索引或外键或列 - spring.jpa.hibernate.ddl-auto=update mariadb can not auto create Database indexes or Foreign key or column 在冲洗 spring.jpa.hibernate.ddl-auto=create-drop 上找不到 @DataJpaTest 表 - @DataJpaTest Table not found on flush spring.jpa.hibernate.ddl-auto=create-drop Hibernate Spring: spring.jpa.hibernate.ddl-auto property doesn't create generate tables doesn't work - Hibernate Spring: spring.jpa.hibernate.ddl-auto property doesn't create generate tables doesn't work 似乎 JPA spring.jpa.ZCB1F008EEBF5012C4EF419A2Cldd-autoZ77 不起作用。 - Seems JPA spring.jpa.hibernate.ddl-auto=update doesn't work Spring spring.jpa.hibernate.ddl-auto等于validate时Boot 2.3启动失败 - Spring Boot 2.3 fails to start when spring.jpa.hibernate.ddl-auto equals to validate spring.jpa.hibernate.ddl-auto = validate属性是否验证带有表的列? - Does spring.jpa.hibernate.ddl-auto = validate property validates the columns with table?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM