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

CONEXÃO COM SQL SERVER 2000

Olá. Tenho uma aplicação no Sql server 2000. Por esse motivo application.properties utilizei o JTDS para conectar no banco. Porém não está dando certo. o que pode ser?

#datasource spring.datasource.url=jdbc:jtds:sqlserver://10.3.100.4;databaseName:CDA spring.datasource.username=sa spring.datasource.password=MARLUKOPGE spring.datasource.testWhileIdle=true spring.datasource.hikari.connection-test-query=SELECT 1 spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver

#jpa spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImproveNamingStrategy spring.jpa.defer-datasource-initialization=true



@Entity @Table(name = "VE_MPCTB03_ACORDOPARC", schema = "RECORDS") public class AcordoParcelamento {

@Id    
@Column(name = "MPCTB03_ACORDOPARC_PK")
private int id;

@Column(name = "NUMR_PROCESSO_MPCTB03")
private String numeroAcordo;

@Column(name = "SIT_ACORDO")
private String situacaoAcordo;

@Column(name = "DATA_PROTOCOLO")
private LocalDate dataProtocolo;

}

@Repository public interface AcordoParcelamentoRepository extends JpaRepository<AcordoParcelamento, Integer> {

@Query("select ac from VE_MPCTB03_ACORDOPARC ac where ac.numr_cpf = :cpf")
Optional<AcordoParcelamento> findByCpf(@Param("cpf") String cpf);

@Query("select ac from VE_MPCTB03_ACORDOPARC ac where ac.numr_cnpj = :cnpj")
Optional<AcordoParcelamento> findByCnpj(@Param("cnpj") String cnpj);

}

@RestController @RequestMapping("/compensacao") public class AcordoParcelamentoController {

@Autowired
private AcordoParcelamentoRepository acordoParcelamentoRepository;


@GetMapping
public ResponseEntity<AcordoParcelamentoDto> localizarAcordo(String tipoConsulta, String cpfOuCnpj) {

    if (tipoConsulta == "1") { // tipoConsulta = "1" - a consulta é por cpf
        Optional<AcordoParcelamento> acordoParcelamento = acordoParcelamentoRepository.findByCpf(cpfOuCnpj);

        if (acordoParcelamento.isPresent()) {
            return ResponseEntity.ok(new AcordoParcelamentoDto(acordoParcelamento.get()));
        }

        return ResponseEntity.notFound().build();

    } else { // tipoConsulta = "2" - a consulta é por cpf
        Optional<AcordoParcelamento> acordoParcelamento = acordoParcelamentoRepository.findByCnpj(cpfOuCnpj);

        if (acordoParcelamento.isPresent()) {
            return ResponseEntity.ok(new AcordoParcelamentoDto(acordoParcelamento.get()));
        }

        return ResponseEntity.notFound().build();

    }

}

}

5 respostas

Oi Douglas,

Qual problema que está acontecendo no seu projeto?

Oi Rodrigo,

aparece as mensagem abaixo em resumo:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'acordoParcelamentoController': Unsatisfied dependency expressed through field 'acordoParcelamentoRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'acordoParcelamentoRepository' defined in br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)! Reason: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'acordoParcelamentoRepository' defined in br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)! Reason: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!

Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)! Reason: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!

Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.Optional br.gov.mt.pge.cndcompensacao.cndconsultacompensacao.repository.AcordoParcelamentoRepository.findByCnpj(java.lang.String)!

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: VE_MPCTB03_ACORDOPARC is not mapped [select ac from VE_MPCTB03_ACORDOPARC as ac where numr_cnpj = :cnpj]

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: VE_MPCTB03_ACORDOPARC is not mapped [select ac from VE_MPCTB03_ACORDOPARC as ac where numr_cnpj = :cnpj]

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: VE_MPCTB03_ACORDOPARC is not mapped

Quando vou rodar a aplicação dá esses erros.

solução!

Oi Douglas,

Na verdade o problema está nessas duas queries suas:

@Query("select ac from VE_MPCTB03_ACORDOPARC ac where ac.numr_cpf = :cpf")
Optional<AcordoParcelamento> findByCpf(@Param("cpf") String cpf);

@Query("select ac from VE_MPCTB03_ACORDOPARC ac where ac.numr_cnpj = :cnpj")
Optional<AcordoParcelamento> findByCnpj(@Param("cnpj") String cnpj);

No from você colocou o nome da tabela ao invés do nome da classe Java e por isso aconteceu o problema.

No filtro por cpf e cnpj você também deve ter colocado o nome das colunas no banco ao invés dos nomes dos atributos e isso também vai causar problemas.

Deu certo professor! Obrigado