Fala Devs,
Estou precisando de uma ajudinha, estou desenvolvendo uma API REST em Java, utilizando o Spring-boot, mas no momento de realizar uma pesquisa no banco de dados utilizando o Spring Data JPA, o sistema gera automaticamente uma query que não é reconhecida pelo banco, pois os nomes dos campos gerados não são reconhecidos pelo banco, ou seja, o Hibernate não está reconhecendo o parâmetro name da anotação @Column
. Seguem os códigos:
Entidade:
public class Banco implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@NotBlank(message = "validation.field.required")
@Size(max = 3, message = "validation.field.fullsize")
@Column(name = "BanCodigoFebraban", length = 3)
private String codigoFebraban;
@NotBlank(message = "validation.field.required")
@Column(name = "BanCodigo")
private Short codigo;
@NotBlank(message = "validation.field.required")
@Size(min = 2, max = 12, message = "validation.field.size")
@Column(name = "BanSigla", length = 12)
private String sigla;
@NotBlank(message = "validation.field.required")
@Size(min = 5, max = 60, message = "validation.field.size")
@Column(name = "BanDenominacao", length = 60)
private String denominacao;
@Column(name = "BanExtinto")
private Boolean extinto;
// ... restante do código
}
application.properties
spring.jpa.show-sql = true
spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto = none
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl
spring.jpa.properties.hibernate.format_sql=true
Repository:
@Repository
public interface BancoRepository extends PagingAndSortingRepository<Banco, String> {
public Page<Banco> findAll(Pageable pageable);
public Page<Banco> findByCodigoFebraban(String codigo, Pageable pageable);
public Page<Banco> findByDenominacaoContainingIgnoreCase(String descricao, Pageable pageable);
public Page<Banco> findBySiglaContainingIgnoreCase(String sigla, Pageable pageable);
}
SQL gerado pelo Hibernate:
Hibernate:
select
banco0_.ban_codigo_febraban as ban_codi1_0_,
banco0_.ban_codigo as ban_codi2_0_,
banco0_.ban_denominacao as ban_deno3_0_,
banco0_.ban_extinto as ban_exti4_0_,
banco0_.ban_sigla as ban_sigl5_0_
from
sipes.dbo.vw_banco banco0_
order by
banco0_.ban_denominacao asc offset 0 rows fetch next ? rows only
Erro apresentado no console:
2021-08-04 02:47:10.449 WARN 17224 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 207, SQLState: S0001
2021-08-04 02:47:10.449 ERROR 17224 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Nome de coluna 'ban_codigo_febraban' inválido.
Como podem ver a anotação não foi respeitada, e não sei o que pode ser, já realizei esse mapeamento diversas vezes anteriormente, mas é a primeira vez que me deparo com isso, não sei o que pode ser esse problema, talvez alguma configuração que desconheço no Spring (já que é a primeira vez que trabalho com esse framework).
De antemão já agradeço a todos.