Retornar Mensagem de não exclusão Hibernate

0 respostas
M

Já procurei em diversos lugares e não consegui uma solução, estou criando uma aplicação em Java Web utilizando o Hibernate, ao tentar excluir um arquivo que possui filhos o mesmo não é excluído gerando uma exceção. Até ai beleza não quero que seja excluído mesmo, por isso não utilizei o cascade. Quero apenas que retorne a mensagem dizendo que a operação não pode ser efetuada.

Exceção

jun 04, 2017 1:39:29 PM com.sun.faces.lifecycle.ApplyRequestValuesPhase execute

ADVERTÊNCIA: /pages/nucleoListar.xhtml @25,24 value="#{nucleoMB.nucleos}": Error reading nucleos on type controle.NucleoMB

javax.el.ELException: /pages/nucleoListar.xhtml @25,24 value="#{nucleoMB.nucleos}": Error reading nucleos on type controle.NucleoMB

at com.sun.faces.facelets.el.TagValueExpression.getValue(Unknown Source)

at javax.faces.component.ComponentStateHelper.eval(Unknown Source)

at javax.faces.component.ComponentStateHelper.eval(Unknown Source)

at javax.faces.component.UIData.getValue(Unknown Source)

at org.primefaces.component.api.UIData.getDataModel(UIData.java:629)

at org.primefaces.component.api.UIData.setRowModel(UIData.java:436)

at org.primefaces.component.api.UIData.setRowIndex(UIData.java:428)

at org.primefaces.component.api.UIData.processPhase(UIData.java:280)

at org.primefaces.component.api.UIData.processDecodes(UIData.java:245)

at javax.faces.component.UIForm.processDecodes(Unknown Source)

at javax.faces.component.UIComponentBase.processDecodes(Unknown Source)

at org.primefaces.component.panel.Panel.processDecodes(Panel.java:280)

at javax.faces.component.UIComponentBase.processDecodes(Unknown Source)

at javax.faces.component.UIComponentBase.processDecodes(Unknown Source)

at javax.faces.component.UIViewRoot.processDecodes(Unknown Source)

at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(Unknown Source)

at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)

at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)

at javax.faces.webapp.FacesServlet.service(Unknown Source)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

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:141)

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:528)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

Caused by: javax.el.ELException: Error reading nucleos on type controle.NucleoMB

at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)

at com.sun.faces.el.DemuxCompositeELResolver._getValue(Unknown Source)

at com.sun.faces.el.DemuxCompositeELResolver.getValue(Unknown Source)

at org.apache.el.parser.AstValue.getValue(AstValue.java:169)

at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)

 40 more

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query

at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)

at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)

at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:255)

at dominio.dao.NucleoDAO.lerTodos(NucleoDAO.java:55)

at controle.NucleoMB.getNucleos(NucleoMB.java:33)

at sun.reflect.GeneratedMethodAccessor123.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)

 44 more

Caused by: org.hibernate.exception.GenericJDBCException: could not execute query

at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)

at org.hibernate.loader.Loader.doList(Loader.java:2536)

at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)

at org.hibernate.loader.Loader.list(Loader.java:2271)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)

at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)

at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)

at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)

at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:246)

 50 more

Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)

at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)

at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:305)

at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)

at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)

at org.hibernate.loader.Loader.doQuery(Loader.java:802)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)

at org.hibernate.loader.Loader.doList(Loader.java:2533)

 58 more
jun 04, 2017 1:39:29 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:255)
	at dominio.dao.NucleoDAO.lerTodos(NucleoDAO.java:55)
	at controle.NucleoMB.getNucleos(NucleoMB.java:33)
	at sun.reflect.GeneratedMethodAccessor123.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(Unknown Source)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(Unknown Source)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(Unknown Source)
	at javax.faces.component.ComponentStateHelper.eval(Unknown Source)
	at javax.faces.component.ComponentStateHelper.eval(Unknown Source)
	at javax.faces.component.UIData.getValue(Unknown Source)
	at org.primefaces.component.api.UIData.getDataModel(UIData.java:629)
	at org.primefaces.component.api.UIData.setRowModel(UIData.java:436)
	at org.primefaces.component.api.UIData.setRowIndex(UIData.java:428)
	at org.primefaces.component.api.UIData.processPhase(UIData.java:280)
	at org.primefaces.component.api.UIData.processDecodes(UIData.java:245)
	at javax.faces.component.UIForm.processDecodes(Unknown Source)
	at javax.faces.component.UIComponentBase.processDecodes(Unknown Source)
	at org.primefaces.component.panel.Panel.processDecodes(Panel.java:280)
	at javax.faces.component.UIComponentBase.processDecodes(Unknown Source)
	at javax.faces.component.UIComponentBase.processDecodes(Unknown Source)
	at javax.faces.component.UIViewRoot.processDecodes(Unknown Source)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(Unknown Source)
	at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
	at javax.faces.webapp.FacesServlet.service(Unknown Source)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	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:141)
	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:528)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.loader.Loader.doList(Loader.java:2536)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
	at org.hibernate.loader.Loader.list(Loader.java:2271)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:246)
	... 50 more
Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:305)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
	at org.hibernate.loader.Loader.doQuery(Loader.java:802)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
	at org.hibernate.loader.Loader.doList(Loader.java:2533)
	... 58 more

Nucleo DAO

@SuppressWarnings("unused")
public class NucleoDAO extends JpaDAO<Nucleo> {

	public NucleoDAO() {
		super();
	}

	/*
	 * public NucleoDAO(EntityManager manager){ super(manager); }
	 */

	public Nucleo lerPorId(int id) {
		Nucleo resultado = null;

		Query consulta = this.getEntityManager().createQuery(
				"from Nucleo a where n.nome = :nnome");
		consulta.setParameter("id", lerPorId(null));

		try {
			resultado = (Nucleo) consulta.getSingleResult();
		} catch (NoResultException e) {
			resultado = null;

		}
		return resultado;

	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Nucleo> lerTodos() {
		List<Nucleo> resultado = null;

		Query consulta = this.getEntityManager().createQuery(
				"from Nucleo a order by a.nome");

		try {
			resultado = (List<Nucleo>) consulta.getResultList();
		} catch (NoResultException e) {
			resultado = null;

		}

		return resultado;
	}
}

Método Excluir do MB

public String acaoExcluir() {

		Long id = JSFUtil.getParametroLong("itemId");
		Nucleo objetoDoBanco = this.dao.lerPorId(id);
		
		this.dao.excluir(objetoDoBanco);
		
		// limpa o objeto da pagina
		this.setNucleo(new Nucleo());
		// limpa a lista
		this.nucleos = null;

		// executa a ação exclusão e retorna a sua pagina
		
		return "nucleoListar?faces-redirect=true";
		
	}

Classe

Entity
@Table(name = "tab_nucleos")
public class Nucleo implements EntityIdSequencial, Serializable{
	
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(generator = "Nucleo_ID", strategy = GenerationType.SEQUENCE)
	@SequenceGenerator(name = "Nucleo_ID", sequenceName = "SEQ_Nucleo", allocationSize = 1)
	private Long id;
	
	@Column
	private String nome;
	private String endereco;
	private String bairro;
	private String cidade;
	private String estado;
	private String cep;
	private String telefone;
	private String email;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public String getCep() {
		return cep;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	@Override
	public int hashCode() {
		if (this.id == null)
			return 0;

		return this.id.hashCode();
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Nucleo other = (Nucleo) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
	
	@Override
	public String toString() {
		return this.nome;
	}
	
	
	

}
Criado 4 de junho de 2017
Respostas 0
Participantes 1