Boa noite, não sei mais o que fazer, quando tento salvar uma cidade aparece o seguinte erro:
Hibernate: select max(id_cidade) from cidade
Hibernate: insert into cidade (nome, estado, id_cidade) values (?, ?, ?)
6061 [AWT-EventQueue-0] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1366, SQLState: HY000
6061 [AWT-EventQueue-0] ERROR org.hibernate.util.JDBCExceptionReporter - Incorrect integer value: ‘¬í’ for column ‘ESTADO’ at row 1
6061 [AWT-EventQueue-0] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
Aí vao as minhas classes:
Cidade
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name = "cidade")
@NamedQueries({
@NamedQuery(name = "Cidade.findAll", query = "SELECT c FROM Cidade c")})
public class Cidade implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID_CIDADE")
private Integer idCidade;
@Column(name = "NOME")
private String nome;
@JoinColumn(name = "ESTADO", referencedColumnName = "ID_ESTADO")
@ManyToOne(optional = false)
private Estado estado;
public Cidade() {
}
public Cidade(Integer idCidade) {
this.idCidade = idCidade;
}
//Getters and setters
@Override
public int hashCode() {
int hash = 0;
hash += (idCidade != null ? idCidade.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Cidade)) {
return false;
}
Cidade other = (Cidade) object;
if ((this.idCidade == null && other.idCidade != null) || (this.idCidade != null && !this.idCidade.equals(other.idCidade))) {
return false;
}
return true;
}
@Override
public String toString() {
return "idCidade=" + idCidade + "]";
}
}
CidadeDAO
import java.util.Collection;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
public class CidadeDAO {
private SessionFactory factory;
public CidadeDAO() throws Exception {
factory = new Configuration().configure().buildSessionFactory();
}
public void insere(Cidade cidade) throws Exception {
Session session = factory.getCurrentSession();
session.beginTransaction();
session.save(cidade);
session.getTransaction().commit();
session.flush();
}
}
Estado
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "estado")
@NamedQueries({
@NamedQuery(name = "Estado.findAll", query = "SELECT e FROM Estado e")})
public class Estado implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID_ESTADO")
private Integer idEstado;
@Column(name = "UF")
private String uf;
@Column(name = "NOME")
private String nome;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "estado")
private Collection<Cidade> cidadeCollection;
public Estado() {
}
public Estado(Integer idEstado) {
this.idEstado = idEstado;
}
//Getters and setters
@Override
public int hashCode() {
int hash = 0;
hash += (idEstado != null ? idEstado.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Estado)) {
return false;
}
Estado other = (Estado) object;
if ((this.idEstado == null && other.idEstado != null) || (this.idEstado != null && !this.idEstado.equals(other.idEstado))) {
return false;
}
return true;
}
@Override
public String toString() {
return this.getUf();
}
}
EstadoDAO
import java.util.Collection;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
public class EstadoDAO {
private SessionFactory factory;
public EstadoDAO() throws Exception {
factory = new Configuration().configure().buildSessionFactory();
}
public Estado buscaPorId(int pk) throws Exception {
Session session = factory.openSession();
Estado estado = (Estado) session.get(Estado.class, pk);
session.flush();
return estado;
}
}
E finalmente o código que eu uso para buscar e salvar
try {
Cidade cidade = new Cidade();
cidade.setNome("Curitiba");
cidade.setEstado(new EstadoDAO().buscaPorId(1)); // Este estado existe e está cadastrado no banco
CidadeDAO cDao = new CidadeDAO();
cDao.insere(cidade);
} catch (Exception e) {
e.printStackTrace();
}
