HibernateException的:缺少列:错误的名称

王牌:

在我的Java代码,我有一个名为场isNegative与现有数据库的类似列。但是休眠坚持的名称应该是is_negative,即使强迫的名称@Column

@Column(name="isNegative")
private boolean isNegative;

错误:

org.hibernate.HibernateException:通过引起缺失列:在datasource.item is_negative

Application.properties:

#JPA
spring.data.jpa.repositories.enabled=false
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.open-in-view=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.hibernate.use-new-id-generator-mappings=false
spring.jpa.properties.hibernate.event.merge.entity_copy_observer=allow
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
cнŝdk:

这是由于您的配置,因为你设置spring.jpa.hibernate.naming.physical-strategyPhysicalNamingStrategyStandardImpl将使用下划线作为名称。

如果检查配置Hibernate命名策略春天文档的部分,你可以看到:

Hibernate使用两种不同的命名策略,将名称从对象模型到相应的数据库名称映射。物理和隐式策略实施方式的完全合格的类名可以通过设置来配置spring.jpa.hibernate.naming.physical-strategyspring.jpa.hibernate.naming.implicit-strategy分别性能,。替代地,如果ImplicitNamingStrategyPhysicalNamingStrategy豆在应用程序上下文是可用的,Hibernate会被自动配置为使用它们。

默认情况下,春季启动配置与物理的命名策略SpringPhysicalNamingStrategy该实现方式提供相同的表结构作为休眠4:所有点被替换为下划线和骆驼外壳由下划线替代以及默认情况下,在较低的情况下产生的所有表名,但它是可能的,如果您的模式要求它可用于覆盖国旗。

为了解决这个你需要自行删除此属性,并使用默认的命名策略:

spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章