解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

问题:

Springboot启动报错:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory‘ defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory

Springboot 版本 1.4.3.RELEASE
Hibernate相关属性:
spring.jpa.hibernate.ddl-auto=validate

解决:

配置application.properties为

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

过程:

配置

debug=true
spring.jpa.show-sql=true

日志提示@Column(name)的注解与数据库字段不匹配。发现问题。

原因:

Springboot的JPA由Hibernate实现。Springboot中默认配置的物理命名策略naming.physical-strategy为org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy。

把Identifier name用toUnderScoreCase下划线命名规则又转换一次…真是反直觉……

一般大公司都会对常用组件基于开源项目自己去做一套框架去使用,并不能完全发挥Springboot“无配置”整合第三方框架的优点,踩到的坑会比传统Spring深一点…

时间: 2024-10-11 02:09:05

解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用的相关文章

JPA报错, PersistenceException_Unable to build Hibernate SessionFactory

javax.persistence.PersistenceException: [PersistenceUnit: TestJPA] Unable to build Hibernate SessionFactory 在一次练习中报出的错误, 因为是使用的JPA, 不可能会用到SessionFactory, 所以查了很多地方都没找到错误, 最后无意中看了一眼实体类, 发现少了个setter方法, 然后又从网上找了很多, 也没找到答案, 为什么少一个setter方法会报出Unable to buil

Unable to build the default ValidatorFactory

今天数据库连接配置全写在hibernate.cfg.xml的时候没有问题,与spring整合的时候就出现了这个问题,反复查了代码,没找到问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init

SSH框架-Caused by: org.hibernate.MappingException: column attribute may not be used together with <column> subelement

昨晚修改了一些表关系,在相关的hbm.xml文件中做了改动,今天早上起来启动tomcat后,发现项目启动不了,控制台报错: 2015-6-14 9:09:42 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.Conte

Hibernate常见错误:java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibe

hibernate4 与 spring3有点冲突 http://blog.csdn.net/gyflyx/article/details/7632645 整合NoSuchMethodError错误 and 升级Spring3.1RC2 和Hibernate4.0.0CR7遇到的一些问题及解决 2012-02-20 10:33:28|  分类: 编程_SSH |字号 订阅 我使用的是hibernate4和spring3,然后报的错误是 java.lang.NoSuchMethodError: or

Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!

Eclipse 编译没问题,但是运行就出现这个报错:Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder! 这个报错是由于安卓的SDK版本太高导致的.两个解决方法,一个是直接使用Android studio,一个是删除高版本的构建包. 先看看报错情况: 如图提示,加载失败26.0.1,那么我们需要打开SDK管理器,并删除这几个包 删除后,重启Eclipse并Clean项目即可.

eclipse升级Android SDK Tool版本到25.2.5后运行项目报错Unable to build: the file dx.jar was not loaded from the SDK folder

概述 由于最近通过SDK-Manager更新了build-tools,当要用到dx.jar这个包时,自动调用最新版本Android SDK build-tools中dx.jar,但是运行android项目时Console却提示: 解决方案 解决办法就是:确保dx.jar这个文件在build-tools\lib和选择的Andriod SDK Tools版本一致就可以. 我用的 Android SDk build-tools 最新版本是 28.0.3,安装的Andriod SDK Tools版本是2

[ASP.NET 5]终于解决:Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll'

11月12日,惊喜地发现SqlClient(System.Data.SqlClient.dll)跨平台了(对应的nuget包包是runtime.unix.System.Data.SqlClient),终于可以在Linux上基于.NET Core运行ASP.NET 5程序访问SQL Server数据库了. 于是,立马更新dnx至rc2,用之前已经写好的.用EF7访问SQL Server数据库的ASP.NET 5示例程序,分别在2台Linux服务器上进行测试.但测试时遇到了一个非常奇怪的问题:其中1

解决 Out of range value adjusted for column 'ID' at row 1

MySQL升级到5.0.17后,在执行sql语句INSERT INTO `news` (`ID`, `Title`, `Content`) VALUES ('', '标题', '正文');时出现错误:#1264 - Out of range value adjusted for column 'ID' at row 1原因:新版本的MySQL对字段的严格检查.解决方法:修改my.ini,将sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_E

解决springboot 出现异常: java.net.BindException: Address already in use: bind

解决springboot 出现异常: java.net.BindException: Address already in use: bind 这是引文在启动springboot 的时候,没有关闭端口号8080(或者自定义的端口号),需要进行手动关闭. 操作步骤: 1,windows+R -->cmd,进入命令窗口. 2,命令行内输入 :netstat   -ano|findstr  8080 8080指的是你启动的时候的端口号 查找最后一列的pid. 命令行输入: taskkill  /pid