web-dev-qa-db-ja.com

エンティティクラス名はアンダースコア付きのSQLテーブル名に変換されます

次のエンティティを定義しています:

@Entity
@Table(name = "EmailTemplate")
public class EmailTemplate {

テーブル注釈にもかかわらず、Java.sql.SQLException: Invalid object name 'email_template'。 EmailTemplateなどのエンティティクラスがemail_templateテーブル名に変換されるのを防ぐにはどうすればよいですか?

編集:

Spring Bootを使用しています:JPAを起動します。私のbuild.gradleファイルから、

compile("org.springframework.boot:spring-boot-starter-data-jpa")
39
James

Springはデフォルトでorg.springframework.boot.orm.jpa.SpringNamingStrategyを使用します。これは、ラクダケース名をアンダースコアで分割します。 spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategyapplication.propertiesを設定してみてください。詳細については、 this および this をご覧ください。

48
Predrag Maric

hibernate v5の場合:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
35
Sllouyssgort

つかいます

spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy
1
Willie Wheeler
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a];     
nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement

両方が必要です:

implicit-strategy 
physical-strategy
0
user8106134

解決しました。

無効なオブジェクト名:JPAを使用したSpringboot(SQLサーバー)

Application.yaml/propertiesで指定します

spring.jpa.hibernate.naming.implicit-strategy spring.jpa.hibernate.naming.physical-strategy

jpa:show-sql:false hibernate:ddl-auto:none#組み込みモードでない場合のデフォルトは「none」命名:implicit-strategy:org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl physical-strategy:org.hibernate。 boot.model.naming.PhysicalNamingStrategyStandardImpl

0
user8106134