实体小驼峰与表蛇形命名自动映射失败问题求助
解决JPA实体小驼峰到SQL Server蛇形字段自动映射失效问题
问题原因
你当前配置的PhysicalNamingStrategyStandardImpl不会将实体的小驼峰属性转换为蛇形命名的表字段,Hibernate会直接使用属性名companyName作为列名查询,导致SQL Server抛出列不存在的异常。
解决方案
1. 修正application.properties中的命名策略配置
替换原有Hibernate命名策略配置为以下内容:
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver # 使用JPA兼容的隐式命名策略 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl # 使用Spring提供的物理命名策略,自动完成驼峰到蛇形的转换 spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy # 指定SQL Server方言 spring.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect
SpringPhysicalNamingStrategy是Spring Boot专门适配的命名策略,会自动将实体类的小驼峰属性(如companyName)转换为蛇形命名的表字段(如company_name),同时兼容SQL Server的表/列名大小写规则。
2. 适配自定义EntityManagerFactory配置
如果你需要保留自定义的EntityManagerFactory Bean,需要将命名策略配置添加到JPA属性中,避免覆盖自动配置的规则:
@Bean public EntityManagerFactory entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setGenerateDdl(false); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("com.domain.artifact.entity"); factory.setDataSource(dataSource()); factory.setJpaDialect(new HibernateJpaDialect()); // 添加JPA属性配置 Properties jpaProperties = new Properties(); jpaProperties.put("hibernate.naming.implicit-strategy", "org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl"); jpaProperties.put("hibernate.naming.physical-strategy", "org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy"); jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.SQLServer2012Dialect"); factory.setJpaProperties(jpaProperties); factory.afterPropertiesSet(); return factory.getObject(); }
3. 验证效果
启动应用后,观察Hibernate生成的SQL语句,应该能看到查询时使用的是company_name而非companyName,此时无需手动添加@Column(name = "company_name")即可完成自动映射。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

