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…