Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Configurar o JPA para reconhecer tabelas em caixa alta

Boa tarde, pessoal.

Estou tentando configurar meu hibernate para conectar a uma tabela já existente no banco de dados. A questão é que o nome dela está em maiúscula, enquanto o hibernate reconhece tudo em minísculo, criando uma segunda tabela. Como configuro meu projeto para reconhecer o name correto?

utilizando a configuração

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

o Spring não consegue inicializar o projeto, travando na seguinte linha:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.1.RELEASE)

2020-06-24 13:45:49.063  INFO 8332 --- [  restartedMain] b.c.b.c.p.PreventivasApplication         : Starting PreventivasApplication on 7417191546680 with PID 8332 (C:\Users\f4476853\git\Preventivas2BE\preventivas\target\classes started by F4476853 in C:\Users\f4476853\git\Preventivas2BE\preventivas)
2020-06-24 13:45:49.065  INFO 8332 --- [  restartedMain] b.c.b.c.p.PreventivasApplication         : No active profile set, falling back to default profiles: default
2020-06-24 13:45:49.100  INFO 8332 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-06-24 13:45:49.100  INFO 8332 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2020-06-24 13:45:49.882  INFO 8332 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFERRED mode.
2020-06-24 13:45:49.940  INFO 8332 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 48ms. Found 1 JPA repository interfaces.
2020-06-24 13:45:50.611  INFO 8332 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-06-24 13:45:50.618  INFO 8332 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-06-24 13:45:50.618  INFO 8332 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.36]
2020-06-24 13:45:50.740  INFO 8332 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-06-24 13:45:50.740  INFO 8332 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1640 ms
2020-06-24 13:45:50.955  INFO 8332 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-06-24 13:45:50.997  INFO 8332 --- [         task-1] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-06-24 13:45:51.043  INFO 8332 --- [         task-1] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.4.17.Final
2020-06-24 13:45:51.183  INFO 8332 --- [         task-1] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-06-24 13:45:51.278  INFO 8332 --- [         task-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-06-24 13:45:51.869  INFO 8332 --- [         task-1] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2020-06-24 13:45:51.880  INFO 8332 --- [         task-1] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect

Sugestões?

3 respostas

Declaração na entidade:

@Entity
@Table(name = "EST_ORD_SRVC_MNTC")
public class OrdemServico {

Algumas sugestões

Utilizar a configuração:

spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.DefaultNamingStrategy

ou

spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy

Algumas pessoas conseguiram resolver colocando

@Entity
@Table(name="\"EST_ORD_SRVC_MNTC\"")
solução!

Obrigado pela atenção Otávio!

O (name=""EST_ORD_SRVC_MNTC"") resolveu em conjunto com o

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

Porém, o que realmente fez funcionar nesse caso foi trocar a ordem do properties. Antes:

spring.datasource.url = jdbc:mysql://1.1.1.1:3306/db
spring.datasource.username = 
spring.datasource.password = 
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

Depois:

spring.datasource.url = jdbc:mysql://1.1.1.1:3306/db
spring.datasource.username = 
spring.datasource.password = 
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql=true