【发布时间】:2014-10-28 12:33:15
【问题描述】:
我使用 primefaces 编辑行,并且工作正常,但是当我再次部署时,更改没有更新,并且堆栈跟踪中没有错误。我使用休眠(HQL 语言)更新数据库中的表。
* 表 Evaluacion 的模型(“modificarEvaluacion”是在调用服务和服务调用 dao 的 db 上更新的方法,onRowEdit 是单击检查按钮时调用的事件)
@ManagedBean(name="evaluacion")
@SessionScoped
public class Evaluacion implements Serializable{
//getters and setters, methods to insert and delete that works fine.
public String modificarEvaluacion() {
Evaluacion ev= new Evaluacion();
ev.grupo.setGrupo_id(grupo.getGrupo_id());
ev.setGrupo(grupo);
boolean isUpdate= evaluacionBo.modificarEvaluacion(ev);
if (isUpdate){System.out.println("OK");}
return "";}
public boolean isEditable() {
return editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
}
public String editAction(Evaluacion evaluacion) {
evaluacion.setEditable(true);
return null;
}
public void onRowEdit(RowEditEvent event) {
try{
this.modificarEvaluacion();
FacesMessage msg = new FacesMessage("Evaluacion modificada");
FacesContext.getCurrentInstance().addMessage(null, msg);
} catch (Exception ex){
FacesMessage msg = new FacesMessage("Error al modificar");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
*** 服务类评估BoImpl*****
public boolean modificarEvaluacion(Evaluacion evaluacion){
return evaluacionDao.modificarEvaluacion(evaluacion);}
Dao 类 EvaluacionDaoImpl
public class EvaluacionDaoImpl extends HibernateDaoSupport implements EvaluacionDao,Serializable{
public boolean modificarEvaluacion(Evaluacion evaluacion) {
boolean isUpdate=false;
Transaction trns = null;
Session session = getHibernateTemplate().getSessionFactory().openSession();
try {
trns = session.beginTransaction();
Query query=session.createQuery("UPDATE Evaluacion set nombre=:nom, fecha=:fe,grupo=:grupo_id where evaluacionId=:evaluacionId");
query.setParameter("nom",evaluacion.getNombre());
query.setParameter("fe",evaluacion.getFecha());
query.setParameter("grupo_id",evaluacion.getGrupo().getGrupo_id());
query.setParameter("evaluacionId",evaluacion.getEvaluacionId());
int row=query.executeUpdate();
if (row==1) {
isUpdate=true;}
/* session.update(evaluacion);*/
session.getTransaction().commit();
} catch (RuntimeException e) {
if (trns != null) {
trns.rollback();
}
e.printStackTrace();
} finally {
// session.flush();
session.close();
}
return isUpdate;
}
* 查看:Page1.xhtml*
<h:body>
<h:form>
<p:messages id="messages" showDetail="true" autoUpdate="true" closable="true" />
</h:form>
<h:form id="form">
<p:growl id="msgs" showDetail="true"/>
<p:dataTable id="tablaEvaluacion" value="#{evaluacion.listaEvaluacion}" var= "p" border="1" editable="true" style="margin-bottom:20px">
<f:facet name="header">
Evaluaciones
</f:facet>
<p:ajax event="rowEdit" listener="#{evaluacion.onRowEdit}" update=":form:msgs" />
<p:ajax event="rowEditCancel" listener="#{dtEditView.onRowCancel}" update=":form:msgs" />
<p:column headerText="Id">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{p.evaluacionId}" /></f:facet>
<f:facet name="input"><p:inputText id="modelInput" value="#{p.evaluacionId}" style="width:100%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Nombre">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{p.nombre}" /></f:facet>
<f:facet name="input"> <p:inputText value="#{p.nombre}" style="width:100%" label="Nombre"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Fecha">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{p.fecha}" /></f:facet>
<f:facet name="input"> <p:inputText value="#{p.fecha}" style="width:100%" label="Fecha"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Grupo">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{p.grupo.grupo_id}" /></f:facet>
<f:facet name="input"><p:inputText value="#{p.grupo.grupo_id}" style="width:100%" label="Grupo"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Editar" style="width:32px">
<p:rowEditor />
</p:column>
<p:column headerText = "Eliminar">
<p:growl id="message" showDetail="true" />
<h:outputLabel value="Selecciona el numero de Evaluacion:" for="txt_evid"></h:outputLabel>
<p:inputText id="txt_evid" value="#{evaluacion.evaluacionId}" required="true"/>
<p:commandButton actionListener="#{evaluacion.eliminarEvaluacion}" id="iconOnly" icon="ui-icon-trash" title="Icon Only"
update="message">
<p:confirm header="Eliminar Evaluacion" message="¿Esta seguro que desea eliminar la Evaluacion?" icon="ui-icon-alert" />
</p:commandButton>
<p:confirmDialog global="true" >
<p:commandButton value="Aceptar" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Cancelar" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:column>
</p:dataTable>
【问题讨论】:
标签: hibernate jsf-2 primefaces