如何解决将hibernate.implicit_naming_strategy设置为默认值在LocalSessionFactoryBean中不起作用
自从我做entityFactoryManager
以来,我创建了一个@EnableAutoConfiguration(exclude = HibernateJpaAutoConfiguration.class)
bean。运行应用程序时,出现错误,发现命名策略从snake_case更改为camel case。就我而言,我的属性userDetail
是因为表名是userdetail
而不是user_detail
。我尝试将休眠属性hibernate.implicit_naming_strategy
设置为jpa
或default
,但是它不起作用。我尝试了提供的物理实现,但没有运气。我认为我不必更改任何休眠属性,因为只要使用自动配置,它就会使用默认设置。
我一定在这里想念东西。
休眠5.4 春天2.3
解决方法
此问题是由休眠属性名称和设置的值组合引起的。
如果实现自己的实体工厂,则将hibernate属性设置为默认设置,该设置似乎与hibernate的用户指南(例如我所面临的问题)不匹配,并且似乎是唯一的一个。
由于我使用@EnableAutoConfiguration(exclude = {HibernateJpaAutoConfiguration.class}),因此用于休眠设置的application.properties不再适用。下面是不必要的,因为默认情况下通过自动配置,这是蛇形情况。许多人还提到了下面的解决方案,以使其可以与蛇案一起使用。
spring.jpa.hibernate.naming.implicit-strategy = org.springframework.boot.orm.jpa.hibernate.SpringImplicityNamingStrategy spring.jpa.hibernate.naming.physical-strategy = org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
忽略了“ hibernate.naming.physical-strategy”是要设置的属性名称,但是在属性类中设置时并非如此,必须将hibernate属性设置为“ hibernate.physical-strategy”
另一个问题是属性值。我来自休眠的文档。
隐式:默认,jpa,org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl 物理:org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
对此。
隐含性:org.springframework.boot.orm.jpa.hibernate.SpringImplicityNamingStrategy 物理:org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
我觉得休眠的实现可能与jpa的实现不同。我使用休眠模式设置什么值都没关系,它不起作用。设置SpringPhysicalNamingStrategy可以解决此问题。 SpringImplicityNamingStrategy也不做任何事情。
我遇到的另一个问题是延迟加载的行为不同,但是hibernate.enable_lazy_load_no_trans是一种反模式的解决方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。