1. ホーム
  2. java

[解決済み] Spring Boot + JPA : 列名アノテーションの無視

2022-04-28 17:16:17

質問

Spring Bootアプリケーションで、依存関係 spring-boot-starter-data-jpa . 私のエンティティクラスには、カラム名を指定するカラムアノテーションがあります。例えば

@Column(name="TestName")
private String testName;

この作成されたSQL test_name をカラム名として使用します。解決策を探した結果、私は spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy は問題を解決しました(列名は列のアノテーションから取得)。

それでも疑問なのは、なぜnaming_strategyを設定せずに EJB3NamingStrategy JPAがカラムアノテーションを無視する?もしかしてhibernateの方言が関係してる?私はMS SQL 2014 Expressに接続しており、私のログが含まれています。

Unknown Microsoft SQL Server major version [12] using SQL Server 2000 dialect
Using dialect: org.hibernate.dialect.SQLServerDialect 

解決方法は?

Hibernate 5の場合、application.propertiesファイルに以下の行を追加することで、この問題を解決しました。

spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl