Tenho uma classe maldita que quando passada a um EJB que apenas executa um s.saveOrUpdate(objeto) me retorna o erro:
Alguem ja teve esse maldito problema?
[net.sf.hibernate.SQL] update cliente_cartao set nro_cartao=? where cod_cliente=? and cod_tipo=?
Hibernate: update cliente_cartao set nro_cartao=? where cod_cliente=? and cod_tipo=?
[net.sf.hibernate.impl.BatcherImpl] preparing statement
[net.sf.hibernate.persister.EntityPersister] Dehydrating entity:
[ClienteCartao#ClienteCartaoPK@bed2ef6]
[net.sf.hibernate.type.StringType] binding '123456' to parameter: 1
[net.sf.hibernate.type.IntegerType] binding '200093428' to parameter: 2
[net.sf.hibernate.type.IntegerType] binding '2' to parameter: 3
[net.sf.hibernate.impl.SessionImpl] Could not synchronize database state with session
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)
ClienteCartao.java
package entidades;
import java.io.Serializable;
/**
* @hibernate.class table = "cliente_cartao"
*/
public class ClienteCartao implements Serializable {
private ClienteCartaoPK id;
private String numero;
//private TipoCartao bandeira;
/**
* @hibernate.id column = "id"
* type = "ClienteCartaoPK"
*/
public ClienteCartaoPK getId() {
return id;
}
/**
* @param id The id to set.
*/
public void setId(ClienteCartaoPK id) {
this.id = id;
}
/**
* @hibernate.property column = "nro_cartao"
* type = "java.lang.String"
* not-null = "true"
*/
public String getNumero() {
return numero;
}
/**
* @param numero The numero to set.
*/
public void setNumero(String numero) {
this.numero = numero;
}
/**
* @hibernate.many-to-one column = "cod_tipo"
* class = "TipoCartao"
* insert = "false"
* update = "false"
*/
/*
public TipoCartao getBandeira() {
return bandeira;
}
*/
/**
* @param bandeira The bandeira to set.
*/
/*
public void setBandeira(TipoCartao bandeira) {
this.bandeira = bandeira;
}
*/
/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return (int) (this.id.getCodigoCliente() + this.getId().getTipo());
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (obj instanceof ClienteCartao) {
ClienteCartao c = (ClienteCartao) obj;
if (this.id.hashCode() == 0 ? c.id.hashCode() == 0 : this.id.hashCode() == c.id.hashCode()) {
return true;
}
}
return false;
}
}
ClienteCartaoPK
package entidades;
import java.io.Serializable;
public class ClienteCartaoPK implements Serializable {
private int codigoCliente;
private int tipo;
/**
* @hibernate.property column = "cod_cliente"
* type = "int"
* not-null = "true"
*/
public int getCodigoCliente() {
return codigoCliente;
}
/**
* @param codigoCliente The codigoCliente to set.
*/
public void setCodigoCliente(int codigoCliente) {
this.codigoCliente = codigoCliente;
}
/**
* @hibernate.property column = "cod_tipo"
* type = "int"
* not-null = "true"
*/
public int getTipo() {
return tipo;
}
/**
* @param tipo The tipo to set.
*/
public void setTipo(int tipo) {
this.tipo = tipo;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return (int) (this.getCodigoCliente() + this.getTipo());
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (obj instanceof ClienteCartaoPK) {
ClienteCartaoPK c = (ClienteCartaoPK) obj;
if (this.hashCode() == 0 ? c.hashCode() == 0 : this.hashCode() == c.hashCode()) {
return true;
}
}
return false;
}
}
ClienteCartao.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping
>
<class
name="entidades.ClienteCartao"
table="cliente_cartao"
dynamic-update="false"
dynamic-insert="false"
select-before-update="false"
optimistic-lock="version"
>
<composite-id
name="id"
class="entidades.ClienteCartaoPK"
>
<key-property
name="codigoCliente"
type="int"
column="cod_cliente"
/>
<key-property
name="tipo"
type="int"
column="cod_tipo"
/>
</composite-id>
<property
name="numero"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="nro_cartao"
not-null="true"
/>
<!--
To add non XDoclet property mappings, create a file named
hibernate-properties-ClienteCartao.xml
containing the additional properties and place it in your merge dir.
-->
</class>
</hibernate-mapping>