web-dev-qa-db-fra.com

Le nom de la classe d'entité est transformé en nom de table SQL avec des traits de soulignement

J'ai l'entité suivante définie:

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

Malgré l'annotation de table, je reçois Java.sql.SQLException: Invalid object name 'email_template'. Comment puis-je empêcher une classe d'entité telle que EmailTemplate d'être transformée en nom de table email_template? 

Modifier:

J'utilise Spring Boot: démarrez JPA. À partir de mon fichier build.gradle,

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

Spring utilise par défaut org.springframework.boot.orm.jpa.SpringNamingStrategy qui divise les noms de cas de chameaux avec un trait de soulignement. Essayez de définir spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy dans application.properties. Consultez this et this pour plus d'informations.

42
Predrag Maric

Pour hibernate v5

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

Utilisation

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

Les deux sont obligatoires: 

implicit-strategy 
physical-strategy
0
user8106134

Résolu.

Nom d'objet non valide: Springboot avec JPA (serveur SQL)

Dans application.yaml/properties, spécifiez le 

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

jpa: show-sql: false hiberner: ddl-auto: none # La valeur par défaut est "none" si vous n'êtes PAS en mode intégré appellation: stratégie implicite: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl stratégie physique: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

0
user8106134