Hibernate 3 - Error: duplicate key [Resolvido]

Ola Javeiros… o/

Estou com o seguinte problema. Tenho uma tabela que contem um composite-id com uma chave composta de 3 campos. Ela está mapeada assim…

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 14/05/2007 15:05:59 by Hibernate Tools 3.2.0.beta6a -->
<hibernate-mapping>
  <class name="gov.pr.celepar.framework.pojo.Imagemverificar"
    schema="ixd" table="tb_imagemverificar">
    <comment>Tabela que armazena os dados das imagens para posterior verificação e indexação.</comment>
    <composite-id
      class="gov.pr.celepar.framework.pojo.ImagemverificarPK" name="id">
      <key-property name="imagemnumero" type="int">
        <column name="imagemnumero"/>
      </key-property>
      <key-property name="tipoDocumento" type="string">
        <column length="2" name="tipodocumento"/>
      </key-property>
      <key-property name="lote" type="int">
        <column name="lote"/>
      </key-property>
    </composite-id>
    <many-to-one class="gov.pr.celepar.framework.pojo.Caixalote"
      fetch="select" name="caixalote">
      <column name="codcaixalote">
        <comment>Código da caixa e lote do documento físico que irá referenciar a imagem do documento digitalizado.</comment>
      </column>
    </many-to-one>
    <property name="datadigitalizacao" type="date">
      <column length="4" name="datadigitalizacao">
        <comment>Formato AAAAMMDD obtido da imagem.</comment>
      </column>
    </property>
    <property name="statusImagem" type="java.lang.Character">
      <column length="1" name="statusimagem">
        <comment>Status da imagem. V = verificado, Null = a verificar</comment>
      </column>
    </property>
  </class>
</hibernate-mapping>

Antigamente essa tabela tinha uma chave composta com apenas dois campos. Sendo que por questões de regras de negocio foi colocado um terceiro campo como chave pk também. Agora toda vez que tento salvar um objeto que seja direfente apenas pelo novo campo (Que no caso é lote)… da erro de “Duplicate Key”.

Gostaria de saber se alguém sabe o que poderia ser… estou sem idéias…
Precisando de mais alguma informação só falar…


Edit: Vou colocar tbm as classes que fazem referencia a esta tabela.

Classe : Imagemverificar

import java.util.Date;

/**
 * Imagemverificar generated by hbm2java
 */
public class Imagemverificar  implements java.io.Serializable {

    // Fields    

     private ImagemverificarPK id;
     private Caixalote caixalote;
     private Date datadigitalizacao;
     private Character statusImagem;

     // Constructors

    /** default constructor */
    public Imagemverificar() {
    }

	/** minimal constructor */
    public Imagemverificar(ImagemverificarPK id) {
        this.id = id;
    }
    /** full constructor */
    public Imagemverificar(ImagemverificarPK id, Caixalote caixalote, Date datadigitalizacao, Character statusImagem) {
       this.id = id;
       this.caixalote = caixalote;
       this.datadigitalizacao = datadigitalizacao;
       this.statusImagem = statusImagem;
    }
    
   
    // Property accessors
    public ImagemverificarPK getId() {
        return this.id;
    }
    
    public void setId(ImagemverificarPK id) {
        this.id = id;
    }
    public Caixalote getCaixalote() {
        return this.caixalote;
    }
    
    public void setCaixalote(Caixalote caixalote) {
        this.caixalote = caixalote;
    }
    public Date getDatadigitalizacao() {
        return this.datadigitalizacao;
    }
    
    public void setDatadigitalizacao(Date datadigitalizacao) {
        this.datadigitalizacao = datadigitalizacao;
    }
    public Character getStatusImagem() {
        return this.statusImagem;
    }
    
    public void setStatusImagem(Character statusImagem) {
        this.statusImagem = statusImagem;
    }
}

Classe: ImagemverificarPK

[code]/**

  • ImagemverificarPK generated by hbm2java
    */
    public class ImagemverificarPK implements java.io.Serializable {

    // Fields
    private int imagemnumero;
    private String tipoDocumento;
    private int lote;

    // Constructors
    /** default constructor /
    public ImagemverificarPK() {
    }
    /
    * full constructor */
    public ImagemverificarPK(int imagemnumero, String tipoDocumento, int lote) {
    this.imagemnumero = imagemnumero;
    this.tipoDocumento = tipoDocumento;
    this.lote = lote;
    }
    // Property accessors
    public int getImagemnumero() {
    return this.imagemnumero;
    }
    public void setImagemnumero(int imagemnumero) {
    this.imagemnumero = imagemnumero;
    }
    public String getTipoDocumento() {
    return this.tipoDocumento;
    }
    public void setTipoDocumento(String tipoDocumento) {
    this.tipoDocumento = tipoDocumento;
    }
    public int getLote() {
    return this.lote;
    }
    public void setLote(int lote) {
    this.lote = lote;
    }
    }
    [/code]

Talvez assim ajude mais…

Resolvi o problema… o problema estava na base de dados que tinha uma trigger que não tinha sido atualizada no banco… :???:

Enfim… fica ai como exemplo de mapeamento… :lol:

Obrigado a todos que pararam pra tentar responder isso aqui…

[]s

Hannibal