首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >hibernate.hbm2ddl.auto set validate导致"missing column“异常并阻止创建会话

hibernate.hbm2ddl.auto set validate导致"missing column“异常并阻止创建会话
EN

Stack Overflow用户
提问于 2016-05-04 10:18:52
回答 1查看 862关注 0票数 1

我有一个关于列重命名的问题。我的应用程序的上下文发生在Jhipster产品内部( spring -boot +spring data jpa with hibernate 4)。将所有数据库列重命名为@Column(name="myColumnName"),并将其放在liquidbase文件中,仅在测试启动时会导致错误。如果我用spring-boot:run启动应用程序,一切都正常。这个问题只与运行集成测试有关(使用spring test runner),因为我只重命名了所有数据库列(之前,测试运行得很好)。

这里是在尝试运行测试时加载spring上下文时的堆栈跟踪:

代码语言:javascript
运行
AI代码解释
复制
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.setFilterChainProxySecurityConfigurer(org.springframework.security.config.annotation.ObjectPostProcessor,java.util.List) throws java.lang.Exception; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.core.userdetails.UserDetailsService com.tess2i.config.SecurityConfiguration.userDetailsService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDetailsService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.tess2i.repository.UserRepository com.tess2i.security.UserDetailsServiceImpl.userRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#8f062f' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#8f062f': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is 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
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:368) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1060) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:326) ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:235) ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:199) ~[spring-web-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:109) ~[tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4659) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5281) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [tomcat-embed-core-8.0.30.jar:8.0.30]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_72]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_72]

.....

Caused by: org.hibernate.MappingException: Unable to find column with logical name: CONEBID in org.hibernate.mapping.Table(stfcoetb) and its related supertables and secondary tables
    at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:583) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:258) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:116) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1598) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1521) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1422) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final]
    ... 50 common frames omitted

来更正此启动问题。我只需删除application.yml文件中的行: hibernate.hbm2ddl.auto: validate (测试包ressource中的那行)。我真的不知道为什么这个配置行“干扰”数据库列的重命名,因为我在内存数据库中使用了H2。我不喜欢这个解决方案。我认为这不是问题的根源。列重命名不应该依赖于"hibernate调优“,主要是在使用内存数据库中的H2时。

你知道这个问题的根源吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-05-04 14:26:38

错误是由于:@Column(name = "CONEBID ")中的空格造成的

而这个可怕的错误并没有在日志消息中突出显示。

代码语言:javascript
运行
AI代码解释
复制
Caused by: org.hibernate.HibernateException: Missing column: conebid  in TESSICOMMUNICATION.PUBLIC.STFCOETB

期待更好的输出:

代码语言:javascript
运行
AI代码解释
复制
Caused by: org.hibernate.HibernateException: Missing column: 'conebid ' in TESSICOMMUNICATION.PUBLIC.STFCOETB

它在运行时工作,因为没有指定验证选项(仅用于测试)。和空白在SQL中是没有意义的(查询、列名),所以查询工作正常。但在测试中,它验证了JPA名称和liquidbase生成的hbm模式名称之间的映射。因此XML和Java是空白敏感的,比较是准确的。

感谢你2个小时的搜寻。叹息!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37024858

复制
相关文章
web.xml is missing and <failOnMissingWebXml> is set to true
这时候需要右击项目——>Java EE Tools——>Generate Deployment Descriptor Stub.然后系统会在src/main/webapp/WEB_INF文件加下创建web.xml文件。错误解决! 当然这个方法是针对web项目的解决方案,如果你的工程不是web项目,那么还有另外一种解决方案,就是在pom文件中配置一下failOnMissingWebXml。具体配置如下: <build> <plugins> <plugin> <groupId
似水的流年
2018/01/18
5940
web.xml is missing and <failOnMissingWebXml> is set to true
这时候需要右击项目——>Java EE Tools——>Generate Deployment Descriptor Stub.然后系统会在src/main/webapp/WEB_INF文件加下创建web.xml文件。错误解决!
似水的流年
2018/01/12
6620
web.xml is missing and <failOnMissingWebXml> is set to true
这时候需要右击项目——>Java EE Tools——>Generate Deployment Descriptor Stub
ydymz
2018/09/10
5120
web.xml is missing and is set to true
这时候需要右击项目——>Java EE Tools——>Generate Deployment Descriptor Stub.然后系统会在src/main/webapp/WEB_INF文件加下创建web.xml文件。错误解决!
似水的流年
2019/12/10
4240
web.xml is missing and <failOnMissingWebXml> is set to true[解决]
今天创建一个maven项目 出现如下错误: web.xml is missing and is set to true 在项目视图下 右键 单击项目名  选择 “Deployment Descriptor”  选择 : Generate Deployment Descriptor Stub 产生 WEB-INF 文件夹和 web.xml 文件  即可解决问题
明明如月学长
2021/08/27
1890
创建 WebRTC 会话
一WebRTC 是一套基于 Web 的实时通信解决方案,通过浏览器内置的 API 来支持音视频通道的搭建。
派大星在吗
2021/12/05
5.6K0
Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
别先生
2018/01/02
2.8K0
Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
hibernate自动建表
表结构和数据总是在程序执行的时候无端的修改,折腾了好长时间,查了很长时间hibernate的数据库映射文件和接口程序,始终没有发现有什么错误,到最后才发现了它!
似水的流年
2019/12/05
1.7K0
hibernate笔记(一)
原始的jdbc操作, Connection/Statement/ResultSet
HUC思梦
2020/09/03
8280
hibernate进阶操作
配置hibernate.cfg.xml配置文件 1.连接数据库 2.数据库方言 3.控制台是否显示sql语句 4.给控制台sql语句添加格式
微醺
2019/01/17
5570
异常dockgeddon导致 cpu 100%
3,查看容器监控确定是哪个容器产生了问题(因为我这个机器上就运行了 docker)
张琳兮
2021/04/26
9410
异常dockgeddon导致 cpu 100%
Hibernate的基本配置
文章目录 1. Hibernate的基本配置 1.1. 核心配置文件(hibernate.cfg.xml) 1.1.1. 必须的配置(配置数据库信息) 1.1.2. 可选的配置 1.1.3. 实例 1.2. 映射关系文件 1.2.1. 作用 1.2.2. 缺点 1.2.3. 创建 1.2.4. 属性 1.2.5. 实例 1.2.6. 注意 1.3. SQL方言 1.3.1. 常用的方言(Mysql,Oracle) 1.4. 主键生成方式 1.4.1. 如何使用 1.4.2. 分类 1.4.3. 常见的分
爱撒谎的男孩
2019/12/31
9310
简述hibernate配置文件的作用[java加载xml配置文件]
1主配置文件Hibernate.cfg.xml主配置文件中主要配置:数据库连接信息、其他参数、映射信息!常用配置查看源码:hibernate-distribution-3.6.0.Final
Java架构师必看
2022/03/12
1K0
求并集----set_union
并集 注意: 有序序列,顺序一致 返回值为接收并集数据的迭代器的最后一个元素迭代器地址 #include<iostream> using namespace std; #include<vecto
大忽悠爱学习
2021/03/02
2210
求并集----set_union
[PHP] 配置vscode的语法检测消除提示Cannot validate since no PHP executable is set
默认下载完vscode什么都不做,会提示一下信息 Cannot validate since no PHP executable is set. Use the setting 'php.validate.executablePath' to configure the PHP executable.
唯一Chat
2019/10/15
1.2K0
[PHP] 配置vscode的语法检测消除提示Cannot validate since no PHP executable is set
Hibernate之关联关系映射(一对一主键映射和一对一外键映射)
本文讲述了如何使用Hibernate进行一对一关联映射,通过实例介绍了User和IdCart两个实体类,以及如何在Hibernate中配置一对一关联映射。
别先生
2018/01/02
1.3K0
hostmonitor对异常用户会话的监控
1.trade@front,创建/home/trade/monitor目录 2.上传脚本至/home/trade/shell下,
小尘哥
2018/12/25
6320
DNS转发导致CDN调度异常
当我们需要访问www.baidu.com这个站点时,我们就会在浏览器地址栏中输入http://www.baidu.com这样一个url。实际上我们想要浏览的网页内容都存放在互联网的某台服务器上,而 DNS 的任务就是找到我们想要访问的这台服务器的 IP 地址,然后向它请求内容。 DNS 地址解析是在 HTTP 连接建立之前的一个过程。 本地 DNS 服务器得到浏览器的域名解析请求后,会采用递归查询方式或者迭代查询方式向 DNS 系统中的其他远程域名服务器提出查询要求。
mengmye
2021/07/06
6.8K1
点击加载更多

相似问题

missing column fail .filter?

119

如何阻止机器人发布并导致异常

22

使用validate阻止更新

10

IceFaces会话到期导致异常

14

Flask-Sqlalchemy Missing BEGIN似乎导致会话不同步

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文