Bueno sucede que tengo un data model el cual lo lleno desde hibernate quiero modificar un registro y hago lo siguiente
public void visualizar(ActionEvent evt) {
dfActual = (Diasfestivos) diasFestivosModel.getRowData();
visibleEditar = true;
}
pero sucede que cuando cambio directamente el objeto dfActual me modifica el objeto dataModel
antes
despues
alguien sabe si se debe a que el objeto esta directamente enlazado a la tabla y si de ser asi como hago para liberarlo
Itc001Controller.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;
import beans.ITC001;
import hibernate.Diasfestivos;
import hibernate.DiasfestivosId;
import hibernate.Paises;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
/**
*
* @author Alejo
*/
@ManagedBean
@SessionScoped
public class Itc001Controller {
ITC001 itc001;
DataModel diasFestivosModel;
Diasfestivos dfActual;
boolean visibleEditar;
Date id;
String descripcion;
public boolean isVisibleEditar() {
return visibleEditar;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public Date getId() {
return id;
}
public void setId(Date id) {
this.id = id;
}
public void setVisibleEditar(boolean visibleEditar) {
this.visibleEditar = visibleEditar;
}
public Diasfestivos getDfActual() {
return dfActual;
}
public void setDfActual(Diasfestivos dfActual) {
this.dfActual = dfActual;
}
public DataModel<Diasfestivos> getDiasFestivosModel() {
if (diasFestivosModel == null) {
diasFestivosModel = new ListDataModel(itc001.getListaFestivos());
}
return diasFestivosModel;
}
public void setDiasFestivosModel(DataModel diasFestivosModel) {
this.diasFestivosModel = diasFestivosModel;
}
/** Creates a new instance of Itc001Controller */
public Itc001Controller() {
itc001 = new ITC001();
cargarDiasFestivos();
}
private void cargarDiasFestivos() {
diasFestivosModel = new ListDataModel(itc001.getListaFestivos());
}
public void visualizar(ActionEvent evt) {
dfActual = (Diasfestivos) diasFestivosModel.getRowData();
visibleEditar = true;
}
public String editar() {
itc001.Actualizar(dfActual);
cargarDiasFestivos();
visibleEditar = false;
return null;
}
public void cancelarEdicion(ActionEvent evt) {
visibleEditar = false;
}
}
ITC001.java
package beans;
import hibernate.Diasfestivos;
import hibernate.HibernateUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import org.hibernate.Session;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Transaction;
/**
*
* @author Alejo
*/
public class ITC001 {
Session session;
public ITC001() {
}
public ArrayList<Diasfestivos> getListaFestivos() {
ArrayList<Diasfestivos> fest = new ArrayList<Diasfestivos>();
try {
session = HibernateUtil.getSessionFactory().getCurrentSessio n();
Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Diasfestivos");
fest = new ArrayList<Diasfestivos>((List<Diasfestivos>) q.list());
} catch (Exception e) {
e.printStackTrace();
}
return fest;
}
public Diasfestivos getFestivoPorFecha(Date dt) {
Diasfestivos df = null;
SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd");
org.hibernate.Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Diasfestivos as df where df.id.dfeFech ='" + sdt.format(dt) + "'");
df = (Diasfestivos) q.uniqueResult();
return df;
}
public void Actualizar(Diasfestivos diaF) {
session = HibernateUtil.getSessionFactory().getCurrentSessio n();
session.beginTransaction();
session.saveOrUpdate(diaF);
session.flush();
session.getTransaction().commit();
}
}
estoy trabajando con
Netbeans 7.0
JSF 2.0
Hibernate 3.0
MySQL 5.1