Inner Join com Hibernate + Criteria

Seguinte galera, estou desenvolvendo um sistema e na área de cadastro do Usuário eu tenho dois Spinner (Empresa, Pessoa) eu gostaria de ao selecionar Empresa ele populasse o spinner de Pessoa somente com as pessoas que trabalham nessa empresa. Porém a entidade Pessoa não tem ligação direta com empresa. Mas a empresa tem a chave estrangeira de pessoa(OnetoOne) não sei se um tratamento unidirecional resolveria essa questão. Mas a lógica que estou aplicando está me retornando erros. Alguém poderia me ajudar?

UsuarioBean método popular

public void popular() {
	try {
		if (empresa != null) {
			PessoaDAO pessoaDAO = new PessoaDAO();
			pessoas = pessoaDAO.buscarPorEmpresa(empresa.getCodigo());
			
		} else {
			pessoas = new ArrayList<>();
		}
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao tentar filtrar as cidades");
		erro.printStackTrace();
	}
}

PessoaDAO metodo buscarPorEmpresa()

    public class PessoaDAO extends GenericDAO<Pessoa>{
@SuppressWarnings({ "unchecked"})
public List<Pessoa> buscarPorEmpresa(Long empresaCodigo) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	try {
		Criteria critEmpresa = sessao.createCriteria(Empresa.class);
		Criteria critPessoa = sessao.createCriteria(Pessoa.class);
		critEmpresa.createAlias("empresa", "e");
		critPessoa.createAlias("pessoa", "p");
		critEmpresa.add(Restrictions.eq("e.codigo", empresaCodigo));
		critEmpresa.add(Restrictions.eq("e.pessoa", "p.codigo"));
		
		List<Pessoa> resultado = critEmpresa.list();
	    return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

o SQL da busca é esse

    SELECT p.codigo,p.nome FROM Pessoa p
INNER JOIN Usuario u ON u.pessoa_codigo = p.codigo
INNER JOIN Empresa e ON u.empresa_codigo = e.codigo
WHERE e.codigo = – << Aqui entra a ID da Empresa

Falai @Rafael_Victor blz, poderia citar que essa nova thread que abriu é continuação dessa aqui: https://www.guj.com.br/t/ajudinha-com-uma-busca-no-bd/386928

Abraços
Max

Voce entende de hibernate + criteria?

Fala ai @Rafael_Victor, Acredito ser algo próximo desse código abaixo

Criteria c = session.createCriteria(Pessoa.class, "P");	 
			c.createAlias("Usuario", "U");
			c.add(Restrictions.eq("P.codigo", "U.pessoa_codigo"));
			c.createAlias("Empresa", "E");
			c.add(Restrictions.eq("U.empresa_codigo","E.codigo"));
			c.add( Restrictions.eq("E.codigo", "XXXX") )//<<-- Aqui entra a ID da Empresa
			c.list();

Abraços
Max

Fala amigo, fiz alguns ajustes para o meu código, porém ele está me retornando o segundo erro:

org.hibernate.QueryException: could not resolve property: usuario of: br.com.riv
erp.domain.Pessoa
	at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(Abs
tractPropertyMapping.java:83)
	at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractProper
tyMapping.java:77)
	at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntity
Persister.java:1978)
	at org.hibernate.loader.criteria.EntityCriteriaInfoProvider.getType(EntityCrite
riaInfoProvider.java:57)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathInfo(CriteriaQu
eryTranslator.java:245)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.createCriteriaEntityNa
meMap(CriteriaQueryTranslator.java:229)
	at org.hibernate.loader.criteria.CriteriaQueryTranslator.<init>(CriteriaQueryTr
anslator.java:112)
	at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:88)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1699)
	at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380)
	at br.com.riverp.dao.PessoaDAO.buscarPorEmpresa(PessoaDAO.java:23)
	at br.com.riverp.Bean.UsuarioBean.popular(UsuarioBean.java:155)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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.jav
a:105)
	at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(Aj
axBehaviorListenerImpl.java:54)
	at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:1
13)
	at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:805)
	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(InvokeApplicationPhas
e.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:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va: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(AbstractAccessLogVa
lve.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(AbstractHttp11Proce
ssor.java:1099)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Abstrac
tProtocol.java:672)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.jav
a: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.ja
va:61)
	at java.lang.Thread.run(Unknown Source)
mai 21, 2019 5:10:39 PM org.apache.catalina.core.StandardContext reload
INFORMAÇÕES: Reloading Context with name [/Riverp] has started
mai 21, 2019 5:10:39 PM org.apache.catalina.session.StandardSession doWriteObjec
t
ADVERTÊNCIA: Cannot serialize session attribute com.sun.faces.application.view.a
ctiveViewMaps for session F60B78F318F8E85B3419F93CF3783EDF
java.io.NotSerializableException: br.com.riverp.domain.Empresa
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.writeObject(Unknown Source)
	at java.util.HashMap.internalWriteEntries(Unknown Source)
	at java.util.HashMap.writeObject(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.writeObject(Unknown Source)
	at java.util.LinkedHashMap.internalWriteEntries(Unknown Source)
	at java.util.HashMap.writeObject(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
	at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
	at java.util.Collections$SynchronizedMap.writeObject(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
	at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.writeObject(Unknown Source)
	at org.apache.catalina.session.StandardSession.doWriteObject(StandardSession.ja
va:1709)
	at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.
java:1107)
	at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:31
5)
	at org.apache.catalina.session.StandardManager.unload(StandardManager.java:265)
	at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.jav
a:384)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5
491)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)
	at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3822)
	at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:
291)
	at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.j
ava:5629)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC
hildren(ContainerBase.java:1376)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC
hildren(ContainerBase.java:1380)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processC
hildren(ContainerBase.java:1380)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(Cont
ainerBase.java:1348)
	at java.lang.Thread.run(Unknown Source)

Poderia me passar o material ao qual você está recorrendo? Bibliografia? Porque pelo que eu pesquisei tem algo haver com meu Domain, alguns problemas se resolveram com a anotação @ManyToOne mas o meu não.

esse é o meu PessoaDomain

    @SuppressWarnings("serial")
@Entity
public class Pessoa extends GenericDomain {
	@Column(length = 50, nullable = false)
	private String nome;
	
	@Column(length = 14, nullable = false)
	private String cpf;
	
	@Column(length = 12, nullable = false)
	private String rg;
	
	@Column(length = 100, nullable = false)
	private String rua;
	
	@Column(nullable = false)
	private Short numero;
	
	@Column(length = 30, nullable = false)
	private String bairro;
	
	@Column(length = 10, nullable = false)
	private String cep;
	
	@Column(length = 10, nullable = false)
	private String complemento;
	
	@ManyToOne
	@JoinColumn(nullable = false)
	private Cidade cidade;
	
	@Column(length = 13, nullable = false)
	private String telefone;

	@Column(length = 14, nullable = false)
	private String celular;
	
	@Column(length = 100, nullable = false)
	private String email;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getRg() {
		return rg;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}
	
	public Cidade getCidade() {
		return cidade;
	}
	
	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public String getRua() {
		return rua;
	}

	public void setRua(String rua) {
		this.rua = rua;
	}

	public Short getNumero() {
		return numero;
	}

	public void setNumero(Short numero) {
		this.numero = numero;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
}

e esse do UsuarioDomain

    package br.com.riverp.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Transient;

@SuppressWarnings("serial")
@Entity
public class Usuario extends GenericDomain {
	@Column(length = 32, nullable = false)
	private String senha;
	
	@Transient
	private String senhaSemCriptografia;
	
	@Column(nullable = false)
	private Character tipo;
	
	@Column(nullable = false)
	private Boolean ativo;
	
	@OneToOne
	@JoinColumn(nullable = false)
	private Pessoa pessoa;
	
	@OneToOne
	@JoinColumn(nullable = true)
	private Empresa empresa;

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public String getSenhaSemCriptografia() {
		return senhaSemCriptografia;
	}
	
	public void setSenhaSemCriptografia(String senhaSemCriptografia) {
		this.senhaSemCriptografia = senhaSemCriptografia;
	}

	public Character getTipo() {
		return tipo;
	}
	
	public Empresa getEmpresa() {
		return empresa;
	}
	
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	@Transient
	public String getTipoFormatado() {
		String tipoFormatado = null;
		
		if(tipo == 'A') {
			tipoFormatado = "Administrador";
		}else if(tipo == 'B') {
			tipoFormatado = "Balconista";
		}else if(tipo == 'G') {
			tipoFormatado = "Gerente";
		}
		return tipoFormatado;
	}

	public void setTipo(Character tipo) {
		this.tipo = tipo;
	}

	public Boolean getAtivo() {
		return ativo;
	}
	
	public String getAtivoFormatado() {
		String ativoFormatado = "Não";
		if(ativo) {
			ativoFormatado = "Sim";
		}
		return ativoFormatado;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
}

Alguém?

Consegui me livrar desse erro, eu não tinha feito o mapeamento de usuario e empresa na classe Pessoa, o que me estranha, já que tenho uma classe cidade que herda de estado e consegue fazer o mesmo evento popular() no XHTML de Pessoa sem estar mapeado na classe estado a classe Cidade.

Porém agora estou recebendo um erro diferente, dizendo que não se pode converter essa linha List<Pessoa> resultado = c.list(); de String para Long. O que poderia ser?

PessoaDAO

public class PessoaDAO extends GenericDAO<Pessoa>{
@SuppressWarnings({ "unchecked"})
public List<Pessoa> buscarPorEmpresa(Long empresaCodigo) {
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	try {
		Criteria c = sessao.createCriteria(Pessoa.class, "P");
		c.createAlias("usuario", "U");
		c.add(Restrictions.eq("P.codigo", "U.pessoa"));
		c.createAlias("empresa", "E");
		c.add(Restrictions.eq("U.empresa","E.codigo"));
		c.add(Restrictions.eq("E.codigo", empresaCodigo));
		c.addOrder(Order.asc("nome"));
		
		List<Pessoa> resultado = c.list();
		
		System.out.println("Lista: " + resultado);
		
		return resultado;
	} catch (RuntimeException erro) {
		throw erro;
	} finally {
		sessao.close();
	}
}

}

Pessoa

@SuppressWarnings(“serial”)
@Entity
public class Pessoa extends GenericDomain {
@Column(length = 50, nullable = false)
private String nome;

@Column(length = 14, nullable = false)
private String cpf;

@Column(length = 12, nullable = false)
private String rg;

@Column(length = 100, nullable = false)
private String rua;

@Column(nullable = false)
private Short numero;

@Column(length = 30, nullable = false)
private String bairro;

@Column(length = 10, nullable = false)
private String cep;

@Column(length = 10, nullable = false)
private String complemento;

@ManyToOne
@JoinColumn(nullable = false)
private Cidade cidade;

@Column(length = 13, nullable = false)
private String telefone;

@Column(length = 14, nullable = false)
private String celular;

@Column(length = 100, nullable = false)
private String email;

@ManyToOne
@JoinColumn(nullable = true)
private Empresa empresa;

@OneToOne
@JoinColumn(nullable = true)
private Usuario usuario;

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getCpf() {
	return cpf;
}

public void setCpf(String cpf) {
	this.cpf = cpf;
}

public String getRg() {
	return rg;
}

public void setRg(String rg) {
	this.rg = rg;
}

public Cidade getCidade() {
	return cidade;
}

public void setCidade(Cidade cidade) {
	this.cidade = cidade;
}

public String getRua() {
	return rua;
}

public void setRua(String rua) {
	this.rua = rua;
}

public Short getNumero() {
	return numero;
}

public void setNumero(Short numero) {
	this.numero = numero;
}

public String getBairro() {
	return bairro;
}

public void setBairro(String bairro) {
	this.bairro = bairro;
}

public String getCep() {
	return cep;
}

public void setCep(String cep) {
	this.cep = cep;
}

public String getComplemento() {
	return complemento;
}

public void setComplemento(String complemento) {
	this.complemento = complemento;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public String getCelular() {
	return celular;
}

public void setCelular(String celular) {
	this.celular = celular;
}

public String getEmail() {
	return email;
}

public void setEmail(String email) {
	this.email = email;
}

public Empresa getEmpresa() {
	return empresa;
}

public void setEmpresa(Empresa empresa) {
	this.empresa = empresa;
}

public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

}

Erro:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
	at org.hibernate.type.descriptor.java.LongTypeDescriptor.unwrap(LongTypeDescrip
tor.java:36)
	at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDe
scriptor.java:63)
	at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBas
icType.java:286)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBas
icType.java:281)
	at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1995)
	at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1966)
	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1901)
	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862)
	at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839)
	at org.hibernate.loader.Loader.doQuery(Loader.java:910)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.ja
va:355)
	at org.hibernate.loader.Loader.doList(Loader.java:2554)
	at org.hibernate.loader.Loader.doList(Loader.java:2540)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
	at org.hibernate.loader.Loader.list(Loader.java:2365)
	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:126)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1718)
	at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:380)
	at br.com.riverp.dao.PessoaDAO.buscarPorEmpresa(PessoaDAO.java:25)
	at br.com.riverp.Bean.UsuarioBean.popular(UsuarioBean.java:157)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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.jav
a:105)
	at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(Aj
axBehaviorListenerImpl.java:54)
	at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:1
13)
	at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:805)
	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(InvokeApplicationPhas
e.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:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va: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(AbstractAccessLogVa
lve.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(AbstractHttp11Proce
ssor.java:1099)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Abstrac
tProtocol.java:672)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.jav
a: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.ja
va:61)
	at java.lang.Thread.run(Unknown Source)