Could not bind value '100' to parameter: 1; java.lang.String

1 resposta
S

Oi,

Estou com um problema do capeta, tento executar o seguinte código:

@WebMethod()
public List<OnpMovimento> getMovimentos(@WebParam(name="seqRoteiro")long seqRoteiro) {
        List<OnpMovimento> retorno = null;
        
        try {
            HibernateHelper.beginTransaction();
            
            OnpMovimento mov = new OnpMovimento();
           
            retorno = mov.findByCriteria(Restrictions.eq("onpMovimentoPK.seqRoteiro", seqRoteiro).ignoreCase());
            
            HibernateHelper.commitTransaction();
        } catch (Throwable ex) {
            HibernateHelper.rollbackTransaction();
        }
        
        return retorno;
    }

Ele me da o erro nada explicativo:

Hibernate: select this_.cod_referencia as cod1_16_0_, this_.seq_matricula as seq2_16_0_, this_.seq_roteiro as seq3_16_0_, this_.cod_agente as cod4_16_0_, this_.cod_medidor as cod5_16_0_, this_.dat_leitura as dat6_16_0_, this_.dat_leitura_anterior as dat7_16_0_, this_.dat_proxima_leitura as dat8_16_0_, this_.dat_troca as dat9_16_0_, this_.dat_vencimento as dat10_16_0_, this_.des_banco_agencia_debito as des11_16_0_, this_.des_banco_debito as des12_16_0_, this_.ind_entrega_especial as ind13_16_0_, this_.ind_fatura_emitida as ind14_16_0_, this_.ind_leitura_divergente as ind15_16_0_, this_.ind_motivo_retirada as ind16_16_0_, this_.ind_situacao_movimento as ind17_16_0_, this_.seq_tipo_entrega as seq18_16_0_, this_.val_arredonda_anterior as val19_16_0_, this_.val_consumo_atribuido as val20_16_0_, this_.val_consumo_estimado as val21_16_0_, this_.val_consumo_medido as val22_16_0_, this_.val_consumo_medio as val23_16_0_, this_.val_consumo_rateado as val24_16_0_, this_.val_consumo_troca as val25_16_0_, this_.val_desconto as val26_16_0_, this_.val_impressoes as val27_16_0_, this_.val_leitura_anterior as val28_16_0_, this_.val_leitura_atribuida as val29_16_0_, this_.val_leitura_real as val30_16_0_, this_.val_numero_leituras as val31_16_0_, this_.val_quantidade_pendente as val32_16_0_ from ONP_MOVIMENTO this_ where this_.seq_roteiro=?
17:16:52,711  INFO LongType:158 - could not bind value '1010007' to parameter: 1; java.lang.String

No Try/Catch eu pego um ClassCastException que nao me diz nada de util também (stacktrace vazio, etc)

Onde o método findByCriteria corresponde a: (_type esta preenchido corretamente)

Criteria crit =  getSession().createCriteria(_type);
        
        for (Criterion c : criterion)
            crit.add(c);
        
        return crit.list();

Classe mapeado por annotation sendo elas as seguintes (geradas pelo Table to Entity class wizard to netbeans). Omiti os set/get.

@Embeddable
public class OnpMovimentoPK implements Serializable {

    @Column(name = "seq_roteiro", nullable = false)
    private long seqRoteiro;

    @Column(name = "seq_matricula", nullable = false)
    private int seqMatricula;

    @Column(name = "cod_referencia", nullable = false)
    private String codReferencia;
@Entity
@Table(name = "ONP_MOVIMENTO")
    public class OnpMovimento extends GenericDao<OnpMovimento, OnpMovimentoPK> implements Serializable {

    /**
     * EmbeddedId primary key field
     */
    @EmbeddedId
    protected OnpMovimentoPK onpMovimentoPK;

    @Column(name = "cod_agente")
    private Integer codAgente;

    @Column(name = "cod_medidor")
    private String codMedidor;

    @Column(name = "seq_tipo_entrega")
    private Short seqTipoEntrega;

    @Column(name = "val_leitura_anterior")
    private Integer valLeituraAnterior;

    @Column(name = "val_leitura_real")
    private Integer valLeituraReal;

    @Column(name = "val_leitura_atribuida")
    private Integer valLeituraAtribuida;

    @Column(name = "val_numero_leituras")
    private Integer valNumeroLeituras;

    @Column(name = "val_consumo_medido")
    private Integer valConsumoMedido;

    @Column(name = "val_consumo_medio")
    private Integer valConsumoMedio;

    @Column(name = "val_consumo_atribuido")
    private Integer valConsumoAtribuido;

    @Column(name = "val_consumo_troca")
    private Integer valConsumoTroca;

    @Column(name = "val_consumo_rateado")
    private Integer valConsumoRateado;

    @Column(name = "val_consumo_estimado")
    private Integer valConsumoEstimado;

    @Column(name = "des_banco_debito")
    private String desBancoDebito;

    @Column(name = "des_banco_agencia_debito")
    private String desBancoAgenciaDebito;

    @Column(name = "dat_leitura")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datLeitura;

    @Column(name = "dat_proxima_leitura")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datProximaLeitura;

    @Column(name = "dat_vencimento")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datVencimento;

    @Column(name = "dat_leitura_anterior")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datLeituraAnterior;

    @Column(name = "dat_troca")
    @Temporal(TemporalType.TIMESTAMP)
    private Date datTroca;

    @Column(name = "val_quantidade_pendente")
    private Short valQuantidadePendente;

    @Column(name = "val_desconto")
    private java.math.BigDecimal valDesconto;

    @Column(name = "val_arredonda_anterior")
    private java.math.BigDecimal valArredondaAnterior;

    @Column(name = "val_impressoes")
    private Short valImpressoes;

    @Column(name = "ind_motivo_retirada")
    private String indMotivoRetirada;

    @Column(name = "ind_leitura_divergente")
    private String indLeituraDivergente;

    @Column(name = "ind_entrega_especial")
    private String indEntregaEspecial;

    @Column(name = "ind_fatura_emitida")
    private String indFaturaEmitida;

    @Column(name = "ind_situacao_movimento")
    private String indSituacaoMovimento;

Já tentei criar um Long passando o seqRoteiro, passar string, mudar tudo de long para int, ja tentei com outros campos mapeados e da o mesmo erro besta.

Alguém tem idéia do que é?

Agradeço qualquer ajuda,
Sérgio

1 Resposta

S

Horas tentando achar o problema. Depois de adicionar o fonte do hibernate no meu projeto achei o problema em 5 minutos. A chamada:

É para fazer comparação ignorando maiúsculo e minúsculo dos valores (strings) das propriedades e não do nome da propriedade como eu pensei.

Criado 5 de dezembro de 2008
Ultima resposta 8 de dez. de 2008
Respostas 1
Participantes 1