No guarda datos en la base de datos
Que tengo mal que no me guarda el registro en la base de datos, adjunte el error
Esto en el JInternalFrame
-
//
-
//
-
package guarderia;
-
-
import entidades.Departamentos;
-
import entidades.Empleados;
-
import hibernate.mapeos.HibernateUtil;
-
import hibernate.mapeos.dao.DepartamentosDAO;
-
import java.util.List;
-
import javafx.scene.control.ChoiceBox;
-
import javax.swing.JComboBox;
-
import javax.swing.JOptionPane;
-
import javax.swing.table.DefaultTableModel;
-
import javax.swing.table.TableColumn;
-
import org.hibernate.Criteria;
-
import org.hibernate.HibernateException;
-
import org.hibernate.Session;
-
import org.hibernate.Transaction;
-
-
-
-
Session sesion;
-
private Transaction tx;
-
DepartamentosDAO departamentodao;
-
Departamentos departamento;
-
Empleados empleado;
-
-
public VDepartamento() {
-
initComponents();
-
this.setTitle("Departamentos");
-
this.cbxManager.removeAllItems();
-
bloquearBotonesEdicion();
-
bloquear();
-
updateTabla();
-
}
-
public void desbloquearBotonesEdicion(){
-
btnGuardar.setEnabled(true);
-
btnLimpiar.setEnabled(true);
-
btnBuscar.setEnabled(true);
-
btnNuevo.setEnabled(false);
-
btnEditar.setEnabled(false);
-
btnEliminar.setEnabled(false);
-
btnCancelar.setEnabled(true);
-
}
-
-
public void bloquearBotonesEdicion(){
-
btnGuardar.setEnabled(false);
-
btnLimpiar.setEnabled(false);
-
btnBuscar.setEnabled(false);
-
btnNuevo.setEnabled(true);
-
btnEditar.setEnabled(true);
-
btnEliminar.setEnabled(true);
-
btnCancelar.setEnabled(false);
-
}
-
/**
-
* This method is called from within the constructor to initialize the form.
-
* WARNING: Do NOT modify this code. The content of this method is always
-
* regenerated by the Form Editor.
-
*/
-
// <editor-fold defaultstate="collapsed" desc="Generated Code">
-
private void initComponents() {
-
-
-
setClosable(true);
-
setIconifiable(true);
-
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
-
-
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
-
-
jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
-
-
jLabel1.setText("Codigo:");
-
jPanel2.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(82, 12, -1, -1));
-
-
jLabel2.setText("Departamento:");
-
jPanel2.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(35, 41, -1, -1));
-
-
jLabel3.setText("Manager:");
-
jPanel2.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 86, -1, -1));
-
jPanel2.add(lblID, new org.netbeans.lib.awtextra.AbsoluteConstraints(144, 12, 81, 17));
-
jPanel2.add(txtDepartamento, new org.netbeans.lib.awtextra.AbsoluteConstraints(142, 36, 260, -1));
-
-
cbxManager.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
-
jPanel2.add(cbxManager, new org.netbeans.lib.awtextra.AbsoluteConstraints(142, 81, 260, -1));
-
-
btnCancelar2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Cancelar 2.png"))); // NOI18N
-
btnCancelar2.setContentAreaFilled(false);
-
btnCancelar2MouseMoved(evt);
-
}
-
});
-
btnCancelar2MouseExited(evt);
-
}
-
});
-
btnCancelar2ActionPerformed(evt);
-
}
-
});
-
jPanel2.add(btnCancelar2, new org.netbeans.lib.awtextra.AbsoluteConstraints(405, 33, -1, 30));
-
-
jPanel1.add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, 460, 120));
-
-
-
},
-
-
}
-
));
-
jScrollPane1.setViewportView(tblDepartamentos);
-
-
jPanel3.add(jScrollPane1);
-
-
jPanel1.add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 120, 470, 350));
-
-
getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 10, 480, 480));
-
-
jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
-
-
btnNuevo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Nuevo.png"))); // NOI18N
-
btnNuevo.setText("Nuevo");
-
btnNuevo.setContentAreaFilled(false);
-
btnNuevoMouseMoved(evt);
-
}
-
});
-
btnNuevoMouseExited(evt);
-
}
-
});
-
btnNuevoActionPerformed(evt);
-
}
-
});
-
jPanel4.add(btnNuevo, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 10, 88, -1));
-
-
btnEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Editar.png"))); // NOI18N
-
btnEditar.setText("Editar");
-
btnEditar.setContentAreaFilled(false);
-
btnEditarMouseMoved(evt);
-
}
-
});
-
btnEditarMouseExited(evt);
-
}
-
});
-
jPanel4.add(btnEditar, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 80, 88, -1));
-
-
btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Guardar.png"))); // NOI18N
-
btnGuardar.setText("Guardar");
-
btnGuardar.setContentAreaFilled(false);
-
btnGuardar.setIconTextGap(3);
-
btnGuardarMouseMoved(evt);
-
}
-
});
-
btnGuardarMouseExited(evt);
-
}
-
});
-
btnGuardarActionPerformed(evt);
-
}
-
});
-
jPanel4.add(btnGuardar, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 150, 88, -1));
-
-
btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Eliminar.png"))); // NOI18N
-
btnEliminar.setText("Eliminar");
-
btnEliminar.setContentAreaFilled(false);
-
btnEliminar.setIconTextGap(3);
-
btnEliminarMouseMoved(evt);
-
}
-
});
-
btnEliminarMouseExited(evt);
-
}
-
});
-
jPanel4.add(btnEliminar, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 210, 88, -1));
-
-
btnLimpiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Limpiar.png"))); // NOI18N
-
btnLimpiar.setText("Limpiar");
-
btnLimpiar.setContentAreaFilled(false);
-
btnLimpiarMouseMoved(evt);
-
}
-
});
-
btnLimpiarMouseExited(evt);
-
}
-
});
-
jPanel4.add(btnLimpiar, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 280, 88, -1));
-
-
btnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Buscar.png"))); // NOI18N
-
btnBuscar.setText("Buscar");
-
btnBuscar.setContentAreaFilled(false);
-
btnBuscar.setIconTextGap(3);
-
btnBuscarMouseMoved(evt);
-
}
-
});
-
btnBuscarMouseExited(evt);
-
}
-
});
-
btnBuscarActionPerformed(evt);
-
}
-
});
-
jPanel4.add(btnBuscar, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 410, 88, -1));
-
-
btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/Icono_Cancelar.png"))); // NOI18N
-
btnCancelar.setText("Cancelar");
-
btnCancelar.setContentAreaFilled(false);
-
btnCancelar.setIconTextGap(3);
-
btnCancelarMouseMoved(evt);
-
}
-
});
-
btnCancelarMouseExited(evt);
-
}
-
});
-
btnCancelarActionPerformed(evt);
-
}
-
});
-
jPanel4.add(btnCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 340, 88, -1));
-
-
getContentPane().add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 5, 100, 480));
-
-
pack();
-
}// </editor-fold>
-
-
btnNuevo.setContentAreaFilled(true);
-
}
-
-
btnNuevo.setContentAreaFilled(false);
-
}
-
-
-
desbloquear();
-
this.desbloquearBotonesEdicion();
-
llenaJComboBoxDepartamentos();
-
}
-
-
btnEditar.setContentAreaFilled(true);
-
}
-
-
btnEditar.setContentAreaFilled(false);
-
}
-
-
btnGuardar.setContentAreaFilled(true);
-
}
-
-
btnGuardar.setContentAreaFilled(false);
-
}
-
-
btnEliminar.setContentAreaFilled(true);
-
}
-
-
btnEliminar.setContentAreaFilled(false);
-
}
-
-
btnLimpiar.setContentAreaFilled(true);
-
}
-
-
btnLimpiar.setContentAreaFilled(false);
-
}
-
-
btnBuscar.setContentAreaFilled(true);
-
}
-
-
btnBuscar.setContentAreaFilled(false);
-
}
-
-
btnCancelar2.setVisible(true);
-
btnCancelar2.setEnabled(true);
-
this.btnCancelar.setEnabled(false);
-
this.btnBuscar.setEnabled(false);
-
this.btnEditar.setEnabled(false);
-
this.btnEliminar.setEnabled(false);
-
this.btnGuardar.setEnabled(false);
-
this.btnLimpiar.setEnabled(false);
-
this.btnNuevo.setEnabled(false);
-
txtDepartamento.setEnabled(true);
-
cbxManager.setEnabled(true);
-
}
-
-
btnCancelar.setContentAreaFilled(true);
-
}
-
-
btnCancelar.setContentAreaFilled(false);
-
}
-
-
try {
-
int resultado = JOptionPane.showConfirmDialog(this, "Seguro que desea cancelar","Salida",JOptionPane.YES_NO_OPTION);
-
bloquear();
-
bloquearBotonesEdicion();
-
}
-
}
-
-
}
-
}
-
-
btnCancelar2.setContentAreaFilled(true);
-
}
-
-
btnCancelar2.setContentAreaFilled(false);
-
}
-
-
try {
-
int resultado = JOptionPane.showConfirmDialog(this, "Desea Salir del Modo Busqueda","Modo Busqueda",JOptionPane.YES_NO_OPTION);
-
btnCancelar2.setVisible(false);
-
btnCancelar2.setEnabled(false);
-
this.btnCancelar.setEnabled(true);
-
this.btnBuscar.setEnabled(true);
-
this.btnEditar.setEnabled(true);
-
this.btnEliminar.setEnabled(true);
-
this.btnGuardar.setEnabled(true);
-
this.btnLimpiar.setEnabled(true);
-
this.btnNuevo.setEnabled(true);
-
txtDepartamento.setEnabled(false);
-
cbxManager.setEnabled(false);
-
}
-
}
-
-
}
-
}
-
-
-
this.iniciarOperacion();
-
departamento = new Departamentos();
-
departamento.setDepartamento(txtDepartamento.getText());
-
departamento.setManager((Empleados) cbxManager.getSelectedItem()); // <--- Aca es donde da el error
-
departamento.setManager(empleado);
-
departamentodao = new DepartamentosDAO();
-
departamentodao.guardarDepartamento(departamento);
-
updateTabla();
-
}
-
-
public void bloquear(){
-
txtDepartamento.setEnabled(false);
-
cbxManager.setEnabled(false);
-
-
}
-
public void desbloquear(){
-
txtDepartamento.setEnabled(true);
-
cbxManager.setEnabled(true);
-
-
}
-
-
public void llenaJComboBoxDepartamentos() {
-
sesion = null;
-
// List<Empleados> resulsetDepartamentos;
-
try {
-
-
sesion = HibernateUtil.getSessionFactory().openSession();
-
-
Criteria crit = sesion.createCriteria(Empleados.class);
-
resulsetDepartamentos = crit.list();// SELECT * FROM TABLA
-
-
cbxManager.removeAllItems();
-
-
for (Empleados emp : resulsetDepartamentos) {
-
cbxManager.addItem(emp.getNombres()+ " "+ emp.getApellidos());
-
}
-
-
sesion.close();
-
-
//JOptionPane.showMessageDialog(this, "Posicion creada", "Satisfactoriamente", JOptionPane.INFORMATION_MESSAGE);
-
-
// JOptionPane.showMessageDialog(this, "Error al crear Posición:" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
-
}
-
}
-
public void iniciarOperacion() throws HibernateException {
-
-
sesion = HibernateUtil.getSessionFactory().openSession();
-
tx = sesion.beginTransaction();
-
}
-
public void updateTabla(){
-
-
try{
-
this.iniciarOperacion();
-
model.setColumnIdentifiers(columNames);
-
lst = sesion.getNamedQuery("TodosDepartamentos").list();
-
-
-
for(Departamentos d : lst){
-
-
model.addRow(lista);
-
}
-
tblDepartamentos.setModel(model);
-
sesion.close();
-
}
-
}
-
columna.setPreferredWidth(60);
-
columna.setMinWidth(40);
-
columna.setMaxWidth(60);
-
}
-
// Variables declaration - do not modify
-
// End of variables declaration
-
}
esta es la clase Departamentos
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import static javax.persistence.GenerationType.SEQUENCE;
import static javax.persistence.GenerationType.TABLE;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
public class Departamentos implements Serializable{
private long departamentoid;
private String Departamento;
private Empleados manager;
public Departamentos(){
}
public Departamentos(String departamento, Empleados manager) {
this.Departamento = departamento;
this.manager = manager;
}
public long getDepartamentoid() {
return departamentoid;
}
public void setDepartamentoid(long departamentoid) {
this.departamentoid = departamentoid;
}
public String getDepartamento() {
return Departamento;
}
public void setDepartamento(String Departamento) {
this.Departamento = Departamento;
}
public Empleados getManager() {
return manager;
}
public void setManager(Empleados manager) {
this.manager = manager;
}
}
Esto esta en el DAO
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package hibernate.mapeos.dao;
import entidades.Departamentos;
import entidades.Posiciones;
import hibernate.mapeos.HibernateUtil;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class DepartamentosDAO {
private Session sesion;
private Transaction tx;
public void guardarDepartamento(Departamentos departamento) {
long id = 0;
try {
id = (Long) sesion.save(departamento);
tx.commit();
} catch (HibernateException he) {
manejaException(he);
tx.rollback();
throw he;
} finally {
sesion.close();
}
}
public void actualizarDepartamento(Departamentos departamento) throws HibernateException {
try {
iniciarOperacion();
sesion.update(departamento);
tx.commit();
} catch (HibernateException he){
tx.rollback();
throw he;
} finally {
sesion.close();
}
}
public void eliminarDepartamento(Departamentos departamento) throws HibernateException {
try {
iniciarOperacion();
sesion.delete(departamento);
tx.commit();
} catch (HibernateException he){
throw he;
} finally {
sesion.close();
}
}
public Departamentos obtenDepartamento(long departamentoid) throws HibernateException {
Departamentos departamento = null;
try {
iniciarOperacion();
departamento = (Departamentos) sesion.get(Departamentos.class, departamentoid);
Query query = sesion.getNamedQuery("TodosDepartamentos");
query.setParameter("departamentoid", departamentoid);
departamento = (Departamentos) query.uniqueResult();
} catch (HibernateException he) {
throw he;
} finally {
sesion.close();
}
return departamento;
}
public void iniciarOperacion() throws HibernateException {
sesion = HibernateUtil.getSessionFactory().openSession();
tx = sesion.beginTransaction();
}
public void manejaException(HibernateException he) throws HibernateException{
tx.rollback();
throw new HibernateException("Ocurrio un error en la capa de acceso a datos. ", he);
}
public List<Departamentos> listadoDepartamentos() {
List<Departamentos> lista;
lista = sesion.createQuery("SELECT d.departamentoid, d.departamento, e.nombres ||' '|| e.apellidos FROM departamentos d JOIN empleados e ON (d.managerid = e.empleadoid)").list();
return lista;
}
}
Este es el archivo hnm.xml
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entidades.Departamentos" table="DEPARTAMENTOS">
<id column="departamentoid" name="departamentoid">
<generator class="sequence"/>
</id>
<property name="departamento" column="DEPARTAMENTO"/>
<many-to-one name="manager" column="MANAGERID" class="entidades.Empleados"
cascade="save-update"></many-to-one>
</class>
<query name="TodosDepartamentos"><![CDATA[
SELECT p FROM Departamentos p
]]>
</query>
</hibernate-mapping>
Excepción
Re: No guarda datos en la base
Revisa tu código:
Departamentos departamento = new Departamentos();
...
...
}
Saludos
edite y puse el código completo, por que lo que me mencionaste lo tengo arriba
Revisa
Revisa el tipo de dato que devuelve tu línea:
Por lo que te dice el error estás devolviendo un String y lo estás tratando de castear a objeto
en este caso a : Empleados.
Lee el error
Lee el mensaje
VDepartamento.java:423
En la linea 423 del archivo VDepartamento
Devuelve un objeto
Que tu esperas sea de tipo empleado, pero lo que tiene ese combo son strings:
Entonces el cast falla, porque ciertamente getSelectedItem no regresa un Empleado sino un String
Puedes cambiar el modelo para que maneje Empleados ( vas a necesitar un custom renderer ) o puedes pedir el índice en vez del objeto e irlo a buscar en una lista o arreglo donde lo tengas guardado.
Como puede alguien escribir
Como puede alguien escribir tanto codigo para una aplicacion, ademas utilizando el concepto de entidades y configurando hibernate, y no ser capaz de detectar un class cast exception...
CCE
En este caso es por mal diseño de los componentes. Seguramente cbxManager.getSelectedItem() devuelve Object y por eso le tienen que hacer cast; por qué no es genérica esa clase? Y así pueden indicar qué tipo de objetos maneja y sería claro en tiempo de compilación que maneja String o Empleado, el cast sobraría y por tanto no hay CCE.
En la clase Departamentos
En la clase Departamentos puse esto para modificar lo que me muestra el combobox
return manager.getNombres()+' '+ manager.getApellidos();
}
y en VDepartamentos puse esto para no tenerlo asi
cbxManager.addItem(emp);
}
Ahora lo que no tengo conocimiento es como puedo capturar idempleado del combobox seleccionado para guardarlo en la base de datos. Si desean pueden darme su correo para enviarle el proyecto y vean mi codigo,
Sigue
Sigue en:
http://www.javamexico.org/foros/java_standard_edition/problema_boton_gua...