我希望在数据库中保存数据表的更改,但出现异常:java.lang.String无法强制转换为jpa.TcamposEncuesta。我不明白。这是我的ManagedBean的一部分,它扩展了类TcamposEncuesta。
public void onEditRow(RowEditEvent event){
try {
TcamposEncuesta tobj = (TcamposEncuesta)event.getObject();
this.setIdcamposEncuesta(tobj.getIdcamposEncuesta());
this.setNombre(((TcamposEncuesta) event.getObject()).getNombre());
this.setAmplitud(((TcamposEncuesta) event.getObject()).getAmplitud());
Properties pr = this.actualizarInsertar();
String id = pr.getProperty("ID");
addMessage("Ha modificado a: " + id);
} catch(Exception e){
addMessage(row+ "Error: " + e.getMessage());
}
}
通过任何测试,我在两种类型的投射中都发现了错误。
这是我的.xhtml,我在datascroller中放了一个数据表,这很有效。
<h:form id="form">
<p:growl id="msgs" showDetail="true"/>
<p:dataScroller id="idScroller" value="#{mbCamposEncuesta.listCamp}" var="campoEnc" chunkSize="2">
<!-- <f:facet name="header">
Scroll para cargar más elementos
</f:facet> -->
<f:facet name="loader">
<p:commandButton type="button" value="Cargar más" icon="fa fa-angle-double-down" />
</f:facet>
<p:dataTable id="idDataTable" editable="true" value="campoEnc" styleClass="dTable">
<p:ajax event="rowEdit" listener="#{mbCamposEncuesta.onEditRow}" update=":form:msgs"/>
<!-- <p:ajax event="rowEditCancel" /> -->
<p:column>
<p:cellEditor>
<f:facet name="output" ><h:outputText value="#{campoEnc.idcamposEncuesta}" /></f:facet>
<f:facet name="input" ><p:inputText value="#{campoEnc.idcamposEncuesta}" disabled="true" /></f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor >
<f:facet name="output" ><h:outputText value="#{campoEnc.nombre}" /></f:facet>
<f:facet name="input" ><p:inputText value="#{campoEnc.nombre}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor>
<f:facet name="output"><h:outputLabel value="#{campoEnc.amplitud}" /></f:facet>
<f:facet name="input"><p:inputNumber value="#{campoEnc.amplitud}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor>
<f:facet name="output" ><h:outputText value="#{campoEnc.script}" /></f:facet>
<f:facet name="input" ><p:inputText value="#{campoEnc.script}" disabled="true" /></f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor >
<f:facet name="output" ><h:outputText value="#{campoEnc.tipoCampo}" /></f:facet>
<f:facet name="input" ><p:inputText value="#{campoEnc.tipoCampo}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:cellEditor>
<f:facet name="output"><h:outputLabel value="#{campoEnc.idlista}" /></f:facet>
<f:facet name="input"><p:inputNumber value="#{campoEnc.idlista}" /></f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:32px">
<p:rowEditor />
</p:column>
</p:dataTable>
</p:dataScroller>
</h:form>
筹码:
java.lang.ClassCastException: java.lang.String cannot be cast to jpa.TcamposEncuesta
at com.beans.jsfprograma.MbCamposEncuesta.onEditRow(MbCamposEncuesta.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:79)
at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:63)
at org.primefaces.event.AbstractAjaxBehaviorEvent.processListener(AbstractAjaxBehaviorEvent.java:38)
at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:804)
at javax.faces.component.UIData.broadcast(UIData.java:1086)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Stack:java.lang.ClassCastException:java.lang.String无法强制转换为jpa.TcamposEncuesta 在com.beans.jsfprograma.MbCamposEncuesta.onEditRow(MbCamposEncuesta.java:100) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 在org.apache.el.parser.AstValue.invoke(AstValue.java:247) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:79) at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:63) at org.primefaces.event.AbstractAjaxBehaviorEvent.processListener(AbstractAjaxBehaviorEvent.java:38) 在javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106) 在javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:804) 在javax.faces.component.UIData.broadcast(UIData.java:1086) 在javax.faces.component.UIData.broadcast(UIData.java:1108) 在javax.faces.component.UIData.broadcast(UIData.java:1108) 在javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 在javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 在javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at or or or or or or or or or or or or or or or or or 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.lang.Thread.run(Thread.java:745)
这是我的目标:
package jpa;
import java.io.Serializable;
import java.util.Date;
import java.util.Properties;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Miguel Morales
*/
@Entity
@Table(name = "TCAMPOS_ENCUESTA", catalog = "", schema = "")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "TcamposEncuesta.findAll", query = "SELECT t FROM TcamposEncuesta t"),
@NamedQuery(name = "TcamposEncuesta.findByIdcamposEncuesta", query = "SELECT t FROM TcamposEncuesta t WHERE t.idcamposEncuesta = :idcamposEncuesta"),
@NamedQuery(name = "TcamposEncuesta.findByNombre", query = "SELECT t FROM TcamposEncuesta t WHERE t.nombre = :nombre"),
@NamedQuery(name = "TcamposEncuesta.findByTipoCampo", query = "SELECT t FROM TcamposEncuesta t WHERE t.tipoCampo = :tipoCampo"),
@NamedQuery(name = "TcamposEncuesta.findByAmplitud", query = "SELECT t FROM TcamposEncuesta t WHERE t.amplitud = :amplitud"),
@NamedQuery(name = "TcamposEncuesta.findByIdlista", query = "SELECT t FROM TcamposEncuesta t WHERE t.idlista = :idlista"),
@NamedQuery(name = "TcamposEncuesta.findByFechaCreacion", query = "SELECT t FROM TcamposEncuesta t WHERE t.fechaCreacion = :fechaCreacion")})
public class TcamposEncuesta extends Statement implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "IDCAMPOS_ENCUESTA", nullable = false)
private Integer idcamposEncuesta = 0;
@Size(max = 10)
@Column(name = "NOMBRE", length = 10)
private String nombre;
@Lob
@Size(max = 2147483647)
@Column(name = "SCRIPT", length = 2147483647)
private String script;
@Size(max = 1)
@Column(name = "TIPO_CAMPO", length = 1)
private String tipoCampo;
@Column(name = "AMPLITUD")
private Integer amplitud;
@Column(name = "IDLISTA")
private Integer idlista;
@Basic(optional = false)
@NotNull
@Column(name = "FECHA_CREACION", nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date fechaCreacion;
public TcamposEncuesta() {
}
public TcamposEncuesta(Integer idcamposEncuesta) {
this.idcamposEncuesta = idcamposEncuesta;
}
public TcamposEncuesta(Integer idcamposEncuesta, Date fechaCreacion) {
this.idcamposEncuesta = idcamposEncuesta;
this.fechaCreacion = fechaCreacion;
}
public Integer getIdcamposEncuesta() {
return idcamposEncuesta;
}
public void setIdcamposEncuesta(Integer idcamposEncuesta) {
this.idcamposEncuesta = idcamposEncuesta;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getScript() {
return script;
}
public void setScript(String script) {
this.script = script;
}
public String getTipoCampo() {
return tipoCampo;
}
public void setTipoCampo(String tipoCampo) {
this.tipoCampo = tipoCampo;
}
public Integer getAmplitud() {
return amplitud;
}
public void setAmplitud(Integer amplitud) {
this.amplitud = amplitud;
}
public Integer getIdlista() {
return idlista;
}
public void setIdlista(Integer idlista) {
this.idlista = idlista;
}
public Date getFechaCreacion() {
return fechaCreacion;
}
public void setFechaCreacion(Date fechaCreacion) {
this.fechaCreacion = fechaCreacion;
}
}