【问题标题】:hibernate.implicit_naming_strategy to default doesn't work in LocalSessionFactoryBeanhibernate.implicit_naming_strategy 到默认值在 LocalSessionFactoryBean 中不起作用
【发布时间】:2020-09-12 05:07:12
【问题描述】:

我创建了一个entityFactoryManager bean,因为我正在做@EnableAutoConfiguration(exclude = HibernateJpaAutoConfiguration.class)。运行应用程序时出现错误,发现命名策略从snake_case更改为camel case。就我而言,我的属性userDetail 因为表名userdetail 而不是user_detail。我尝试将休眠属性hibernate.implicit_naming_strategy 设置为jpadefault,但它不起作用。我尝试了提供的物理实现,但没有运气。我认为我不应该更改任何休眠属性,因为它只是使用默认设置,假设自动配置这样做。

我一定是错过了什么。

休眠 5.4 春天2.3

【问题讨论】:

  • 也许这个answer 可以帮助您自定义使用的命名策略。
  • 我相信自定义会起作用,但我不需要这样做,因为只要我不实现自己的 entityFactoryManager,默认值就会起作用。不明白为什么我在部署自己的entityFactoryManager的时候,命名策略变成了camel。

标签: hibernate spring-data-jpa


【解决方案1】:

问题是由休眠属性名称和设置的值组合引起的。

如果您实现自己的实体工厂,则将 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.physical-strategy”

另一个问题是属性值。我从hibernate的文档中去了..

隐式:默认,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

我有一种感觉,hibernate 的实现可能与 jpa 的不同。我使用休眠设置的值无关紧要,它不起作用。设置 SpringPhysicalNamingStrategy 解决了这个问题。 SpringImplicityNamingStrategy 也不做任何事情。

我遇到的另一个问题是延迟加载的行为不一样,但 hibernate.enable_lazy_load_no_trans 是一种反模式解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-17
    • 2018-11-12
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多