Boa tarde!!! Quando tento gravar um registro no banco ocorre esse erro.
dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Server version name: Apache Tomcat/9.0.41 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Server built: Dec 3 2020 11:43:00 UTC dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Server version number: 9.0.41.0 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: OS Name: Windows 10 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: OS Version: 10.0 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Architecture: amd64 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Java Home: C:\Program Files\Java\jdk dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Version: 11.0.1+13-LTS dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: JVM Vendor: Oracle Corporation dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: CATALINA_BASE: C:\Desenvolvimento\ws-java-web.metadata.plugins\org.eclipse.wst.server.core\tmp0 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: CATALINA_HOME: C:\apache dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dcatalina.base=C:\Desenvolvimento\ws-java-web.metadata.plugins\org.eclipse.wst.server.core\tmp0 dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dcatalina.home=C:\apache dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dwtp.deploy=C:\Desenvolvimento\ws-java-web.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps dez 26, 2020 6:49:11 PM org.apache.catalina.startup.VersionLoggerListener log INFO: Command line argument: -Dfile.encoding=Cp1252 dez 26, 2020 6:49:11 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0]. dez 26, 2020 6:49:11 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. dez 26, 2020 6:49:11 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] dez 26, 2020 6:49:11 PM org.apache.catalina.core.AprLifecycleListener initializeSSL INFO: OpenSSL successfully initialized [OpenSSL 1.1.1g 21 Apr 2020] dez 26, 2020 6:49:12 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler [“http-nio-8080”] dez 26, 2020 6:49:12 PM org.apache.catalina.startup.Catalina load INFO: Server initialization in [766] milliseconds dez 26, 2020 6:49:12 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service [Catalina] dez 26, 2020 6:49:12 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet engine: [Apache Tomcat/9.0.41] dez 26, 2020 6:49:12 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [189] milliseconds. dez 26, 2020 6:49:15 PM org.apache.jasper.servlet.TldScanner scanJars INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly. log4j:WARN See <a href="http://logging.apache.org/log4j/1.2/faq.html#noconfig">http://logging.apache.org/log4j/1.2/faq.html#noconfig</a> for more info. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.jboss.classfilewriter.ClassFile$1 (file:/C:/Desenvolvimento/ws-java-web/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/chamados/WEB-INF/lib/jboss-classfilewriter-1.0.4.Final.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) WARNING: Please consider reporting this to the maintainers of org.jboss.classfilewriter.ClassFile$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release dez 26, 2020 6:49:21 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler [“http-nio-8080”] dez 26, 2020 6:49:21 PM org.apache.catalina.startup.Catalina start INFO: Server startup in [8710] milliseconds Hibernate: select u1_0.idUsuario, u1_0.dsEmail, u1_0.dsSenha, u1_0.nmUsuario, u1_0.nrTelefone, u1_0.idSetor, u1_0.stUsuario from USUARIO as u1_0 Hibernate: select s1_0.idSetor, s1_0.nmSetor from SETOR as s1_0 Hibernate: select next value for SEQ_USUARIO from rdb$database Hibernate: select s1_0.idSetor, s1_0.nmSetor from SETOR as s1_0 dez 26, 2020 6:49:41 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [default] in context with path [/chamados] threw exception br.com.caelum.vraptor.InterceptionException: javax.persistence.RollbackException: Error while committing the transaction at br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:69) at br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:55) at br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$<em>WeldClientProxy.tryToInvoke(Unknown Source) at br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75) at br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$</em>$$<em>WeldClientProxy.executeAround(Unknown Source) at br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:85) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:75) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor$Proxy$</em>$$<em>WeldClientProxy.intercept(Unknown Source) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler$1.call(ToInstantiateInterceptorHandler.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler$1.call(ToInstantiateInterceptorHandler.java:68) at br.com.caelum.vraptor.core.Try.run(Try.java:18) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.executeSafely(ToInstantiateInterceptorHandler.java:68) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83) at br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93) at br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$</em>$$<em>WeldClientProxy.start(Unknown Source) at br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:93) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266) at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253) at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232) at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169) at org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165) at org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119) at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112) at org.jboss.weld.event.EventImpl.fire(EventImpl.java:83) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: javax.persistence.RollbackException: Error while committing the transaction at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:81) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104) at br.com.caelum.vraptor.jpa.JPATransactionInterceptor.commit(JPATransactionInterceptor.java:90) at br.com.caelum.vraptor.jpa.JPATransactionInterceptor.intercept(JPATransactionInterceptor.java:75) at br.com.caelum.vraptor.jpa.JPATransactionInterceptor$Proxy$</em>$$<em>WeldClientProxy.intercept(Unknown Source) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38) at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54) at br.com.caelum.vraptor.core.DefaultReflectionProvider.invoke(DefaultReflectionProvider.java:42) at br.com.caelum.vraptor.core.DefaultReflectionProvider$Proxy$</em>$$_WeldClientProxy.invoke(Unknown Source) at br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:64) … 50 more Caused by: java.lang.NullPointerException at org.hibernate.type.EntityType.toLoggableString(EntityType.java:514) at org.hibernate.internal.util.EntityPrinter.toString(EntityPrinter.java:73) at org.hibernate.internal.util.EntityPrinter.toString(EntityPrinter.java:117) at org.hibernate.event.internal.AbstractFlushingEventListener.logFlushResults(AbstractFlushingEventListener.java:127) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:103) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:110) at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1335) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:422) at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2655) at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:1823) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:442) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:183) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:40) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:281) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) … 62 more
Arquivo edit.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
Cadastro de UsuariosCadastro de Usuarios
<fmt:setLocale value=“pt_BR” scope=“session”/>
<ul>
<c:forEach items="${ errors }" var="error">
<li>
<fmt:message key="${ error.category }" />
${ error.message }
</li>
</c:forEach>
</ul>
<input type="hidden" name="usuario.idUsuario" value="${ usuario.idUsuario }" />
<fmt:message key="nmUsuario" />:<input type="text" name="usuario.nmUsuario" value="${ usuario.nmUsuario }" />
<br>
<br>
<fmt:message key="dsEmail" />:<input type="text" name="usuario.dsEmail" value="${ usuario.dsEmail }" />
<br>
<br>
<fmt:message key="nrTelefone" />:<input type="text" name="usuario.nrTelefone" value="${ usuario.nrTelefone }" />
<br>
<br>
<fmt:message key="idSetor" />:
<select name="usuario.setor.idSetor">
<option value="0">SELECIONE</option>
<c:forEach items="${setores}" var="setor">
<option value="${setor.idSetor}" <c:if test="${setor.idSetor == usuario.setor.idSetor }">SELECTED</c:if>>${setor.nmSetor }</option>
</c:forEach>
</select>
<br>
<br>
<fmt:message key="dsSenha" />:<input type="password" name="usuario.dsSenha" />
<br>
<br>
<fmt:message key="dsSenhaConfirm" />:<input type="password" name="usuario.dsSenhaConfirm" />
<br>
<br>
<fmt:message key="stUsuario" />:
<select name="usuario.stUsuario">
<c:forEach items="${situacoes}" var="situacao">
<option value="${situacao}" <c:if test="${situacao.value == usuario.stUsuario.value }">SELECTED</c:if> >${situacao}</option>
</c:forEach>
</select>
<br>
<br>
<button type="submit">Gravar</button>
<button onclick="forms[0].action='/chamados/usuario/delete'">Excluir</button>
<button onclick="forms[0].action='/chamados/usuario/list'">Voltar</button>
package br.com.jsm.chamados.controllers;
import java.util.List;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.validator.I18nMessage;
import br.com.caelum.vraptor.validator.Validator;
import br.com.jsm.chamados.business.SetorBO;
import br.com.jsm.chamados.business.UsuarioBO;
import br.com.jsm.chamados.models.UsuarioModel;
import br.com.jsm.chamados.types.StUsuarioType;
/**
- Classe Destinada para realizar o CRUD
- C - CREATE
- R - READ
- U - UPDATE
- D - DELETE
- @author Usuário
*/
@Controller
public class UsuarioController {
@Inject
private EntityManager entityManager;
@Inject
private Result result;
@Inject
private Validator validator;
private UsuarioBO usuarioBO;
private SetorBO setorBO;
public void edit(UsuarioModel usuario) {
setorBO = new SetorBO();
result.include("setores", setorBO.getListSetor(entityManager));
result.include("situacoes", StUsuarioType.values());
result.include("usuario", usuario);
}
@SuppressWarnings("unchecked")
public void list() {
Query query = this.entityManager.createQuery("from UsuarioModel");
List<UsuarioModel> usuarios = query.getResultList();
result.include("usuarios", usuarios);
}
public void save(UsuarioModel usuario) throws Exception {
validator.validate(usuario);
if (usuario.getSetor().getIdSetor() == 0) {
validator.add(new I18nMessage("idSetor", "not.blank"));
}
if (usuario.getStUsuario().equals(StUsuarioType.SELECIONE)) {
validator.add(new I18nMessage("stUsuario", "not.blank"));
}
if (! validator.hasErrors()) {
if(usuario.getDsSenha() != null && ! usuario.getDsSenha().equals("")) {
if (! usuario.getDsSenha().equals(usuario.getDsSenhaConfirm())) {
validator.add(new I18nMessage("dsSenha", "senha.nao.confere"));
}
}
}
validator.onErrorForwardTo(this).edit(usuario);
usuarioBO = new UsuarioBO();
if (usuario.getDsSenha() != null && ! usuario.getDsSenha().equals("")) {
String dsSenha = usuarioBO.encryptPassword(usuario.getDsSenha());
usuario.setDsSenha(dsSenha);
}else {
if (usuario.getIdUsuario() != 0 ) {
UsuarioModel usuarioBD = this.entityManager.find(UsuarioModel.class, usuario.getIdUsuario());
usuario.setDsSenha(usuarioBD.getDsSenha());
}
}
if (usuario.getIdUsuario() == 0) {
create(usuario);
}else {
update(usuario);
}
}
public void create(UsuarioModel usuario) {
this.entityManager.persist(usuario);
result.forwardTo(this).edit(null);
}
public void read(UsuarioModel usuario) {
UsuarioModel setorBD = this.entityManager.find(UsuarioModel.class, usuario.getIdUsuario());
result.forwardTo(this).edit(setorBD);
}
public void update(UsuarioModel usuario) {
this.entityManager.merge(usuario);
result.forwardTo(this).edit(null);
}
public void delete(UsuarioModel usuario) {
UsuarioModel setorBD = this.entityManager.find(UsuarioModel.class, usuario.getIdUsuario());
this.entityManager.remove(setorBD);
result.forwardTo(this).edit(null);
}
}
package br.com.jsm.chamados.models;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import br.com.jsm.chamados.types.StUsuarioType;
/**
- Classe Usuário
*Essa classe servira para registro dos dados dos Usuários
*
- id = Idendificadores
- nm = Nome nmUsuario
- ds = Descrição dsChamado
- nr = Numero nrCpf
- tp = Tipo tpChamado
- st = Situação stChamado
*/
@Entity
//
@Table(name = “USUARIO”)
public class UsuarioModel {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQUSUARIO")
@SequenceGenerator(name = "SEQUSUARIO", sequenceName = "SEQ_USUARIO", initialValue = 0, allocationSize = 1)
private int idUsuario;
@NotBlank
private String nmUsuario;
private String nrTelefone;
@NotBlank
private String dsEmail;
//Setor;
@NotNull
@OneToOne
@JoinColumn(name = "idSetor")
private SetorModel setor;
@NotBlank
private String dsSenha;
@Transient
private String dsSenhaConfirm;
//Situação
@NotNull
@Enumerated(EnumType.ORDINAL)
private StUsuarioType stUsuario;
public int getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}
public String getNmUsuario() {
return nmUsuario;
}
public void setNmUsuario(String nmUsuario) {
this.nmUsuario = nmUsuario;
}
public String getNrTelefone() {
return nrTelefone;
}
public void setNrTelefone(String nrTelefone) {
this.nrTelefone = nrTelefone;
}
public String getDsEmail() {
return dsEmail;
}
public void setDsEmail(String dsEmail) {
this.dsEmail = dsEmail;
}
public String getDsSenha() {
return dsSenha;
}
public void setDsSenha(String dsSenha) {
this.dsSenha = dsSenha;
}
public SetorModel getSetor() {
return setor;
}
public void setSetor(SetorModel setor) {
this.setor = setor;
}
public StUsuarioType getStUsuario() {
return stUsuario;
}
public void setStUsuario(StUsuarioType stUsuario) {
this.stUsuario = stUsuario;
}
public String getDsSenhaConfirm() {
return dsSenhaConfirm;
}
public void setDsSenhaConfirm(String dsSenhaConfirm) {
this.dsSenhaConfirm = dsSenhaConfirm;
}
}