[Java][Spring Boot][MySQL] テーブル名/列名等の大文字小文字を区別する方法 - NetBeansで始めるSpring Boot (9)
環境
- Spring Boot 1.4.2
- Java 8
概要
例えば、以下のようにエンティティのテーブル名を大文字にしていても、データベースには小文字でアクセスするようになっています。
@Entity
@Table("MY_ENTITY")
class MyEntity {
// ...
}
これを、大文字でアクセスするようにする方法です。
詳細
Spring Bootのデフォルトでは、物理名マッピングするためのクラスが設定されています。
物理名マッピングは、SpringPhysicalNamingStrategyクラスで行われています。
上記クラスの中ですべて小文字変換しているので、大文字小文字を区別するMySQLでは困ってしまいます。
解決策
apprication.ymlまたは同propertiesの中で、物理名マッピングするクラスをHibernateオリジナルのものに変更します。
application.yml
spring:
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
真の解決策
テーブル名/列名は小文字にするのが安心安全です。