Solución Error al guardar Objeto a String cannot be cast to java.lang.String Hibernate Criteria
El ejemplo lo realice con el boton Guardar de un proyecto que estoy realizando. Hay momentos en que obtienes el famoso error de que un objeto no se puede castear a String. Aqui te muestro una solución de como debes de castear ese problema.
Boton Guardar
try {
this.iniciarOperacion();
long maxid = (long) sesion.createCriteria(TransBanc.class)
.setProjection(Projections.max("idtransbanc"))
.uniqueResult();
tbd = new TransBancDAO();
listatransbanc = new ArrayList<>();
long id = (maxid) + 1;
String descripcion = txtDescripción.getText();
Date fecha = dcFecha.getDate();
sqldate = new java.sql.Date(fecha.getTime());
Documentos documentos = (Documentos) cbxDocumento.getSelectedItem();
CuentaBancaria cuentabancaria = (CuentaBancaria) cbxCuenta.getSelectedItem();
Moneda moneda = (Moneda) cbxMoneda.getSelectedItem();
double tasa = Double.parseDouble(txtTasa.getText());
double neto = Double.parseDouble(txtNeto.getText());
if (descripcion.trim().equals("")) {
JOptionPane.showMessageDialog(this, "Ingrese la cuenta bancaria");
} else {
if (descripcion != null) {
TransBanc transbanc = new TransBanc();
String documento = String.valueOf((Documentos) cbxDocumento.getSelectedItem());
Documentos document = (Documentos) sesion.createCriteria(Documentos.class, "d")
.createAlias("d.debito_credito", "dc")
.add(Restrictions.eq("d.documento", documento))
.uniqueResult();
if (document.getDebito_credito().getDebito_credito().equals("Crédito")) {
transbanc.setCredito(Double.valueOf(neto));
transbanc.setDebito(0);
}
if (document.getDebito_credito().getDebito_credito().equals("Debito")) {
transbanc.setCredito(0);
transbanc.setDebito(Double.valueOf(neto));
}
transbanc.setIdtransbanc(id);
transbanc.setFecha(sqldate);
transbanc.setDescripción(descripcion);
transbanc.setDocumentos(documentos);
transbanc.setCuentabancaria(cuentabancaria);
transbanc.setMoneda(moneda);
transbanc.setTasa(Double.valueOf(tasa));
transbanc.setIdestado("S");
this.lblID.setText((String.valueOf(id)));
if (tbd.guardarTransBanc(transbanc) == true) {
listatransbanc.add(transbanc);
tblCtaBanc.removeAll();
}
} else {
JOptionPane.showMessageDialog(null, "Complete la Descripción");
}
this.bloquearBotonesEdicion();
this.bloquear();
this.lblEstado.setText("Sin Aplicar");
updateTabla();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Seleccione una Cuenta Bancaria");
}
}
Si leen en el codigo que tengo mas arriba, al combobox cbxDocumento obtengo dos veces su valor, el primero porque necesito el objeto y el segundo porque necesito el String para evistar el problema del error de "cannot be cast to java.lang.String".
Forma correcta de castear un objeto a String
Forma en el cual te producira el error que muestro en la imagen
Adjunto | Tamaño |
---|---|
error.jpg | 92.67 KB |
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 1 día 9 horas
hace 20 semanas 5 días
hace 1 año 32 semanas
hace 1 año 36 semanas
hace 1 año 44 semanas
hace 1 año 52 semanas
hace 2 años 2 semanas
hace 2 años 4 semanas
hace 2 años 7 semanas
hace 2 años 7 semanas