Olá, boa noite. Por favor, gostaria da ajuda dos senhores para resolver um problema em um programa na linguagem java que eu e alguns amigos estamos fazendo para a faculdade.
Temos classes de controle, e nessas classes de controle encontramos um erro que não estamos conseguindo resolver. Vou postar aqui a classe de controle “Funcionario”, como exemplo, já que todas as nossas classes de controle apresentam o mesmo erro.
Lá embaixo, nas funções getFuncionarioCount e findFuncionarioEntities, encontramos o seguinte erro:
em CriteriaQuery cq = em.getCriteriaBuilder().createQuery(): cannot find the symbol
Já demos uma procurada na net, mas não conseguimos achar nada que funcionasse aqui. Por favor, algum dos senhores já passou por isso, ou sabe a solução para esse problema?
Obrigado desde já
Murilo Marchiori
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package controles;
import classes.Funcionario;
import classes.FuncionarioPK;
import controles.exceptions.NonexistentEntityException;
import controles.exceptions.PreexistingEntityException;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import classes.Empresas;
import classes.Endereco;
public class FuncionarioJpaController implements Serializable {
public FuncionarioJpaController(EntityManagerFactory emf) {
this.emf = emf;
}
private EntityManagerFactory emf = null;
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void create(Funcionario funcionario) throws PreexistingEntityException, Exception {
if (funcionario.getFuncionarioPK() == null) {
funcionario.setFuncionarioPK(new FuncionarioPK());
}
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
Empresas idempresa = funcionario.getIdempresa();
if (idempresa != null) {
idempresa = em.getReference(idempresa.getClass(), idempresa.getIdempresa());
funcionario.setIdempresa(idempresa);
}
Endereco idEndereco = funcionario.getIdEndereco();
if (idEndereco != null) {
idEndereco = em.getReference(idEndereco.getClass(), idEndereco.getIdEndereco());
funcionario.setIdEndereco(idEndereco);
}
em.persist(funcionario);
if (idempresa != null) {
idempresa.getFuncionarioCollection().add(funcionario);
idempresa = em.merge(idempresa);
}
if (idEndereco != null) {
idEndereco.getFuncionarioCollection().add(funcionario);
idEndereco = em.merge(idEndereco);
}
em.getTransaction().commit();
} catch (Exception ex) {
if (findFuncionario(funcionario.getFuncionarioPK()) != null) {
throw new PreexistingEntityException("Funcionario " + funcionario + " already exists.", ex);
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}
public void edit(Funcionario funcionario) throws NonexistentEntityException, Exception {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
Funcionario persistentFuncionario = em.find(Funcionario.class, funcionario.getFuncionarioPK());
Empresas idempresaOld = persistentFuncionario.getIdempresa();
Empresas idempresaNew = funcionario.getIdempresa();
Endereco idEnderecoOld = persistentFuncionario.getIdEndereco();
Endereco idEnderecoNew = funcionario.getIdEndereco();
if (idempresaNew != null) {
idempresaNew = em.getReference(idempresaNew.getClass(), idempresaNew.getIdempresa());
funcionario.setIdempresa(idempresaNew);
}
if (idEnderecoNew != null) {
idEnderecoNew = em.getReference(idEnderecoNew.getClass(), idEnderecoNew.getIdEndereco());
funcionario.setIdEndereco(idEnderecoNew);
}
funcionario = em.merge(funcionario);
if (idempresaOld != null && !idempresaOld.equals(idempresaNew)) {
idempresaOld.getFuncionarioCollection().remove(funcionario);
idempresaOld = em.merge(idempresaOld);
}
if (idempresaNew != null && !idempresaNew.equals(idempresaOld)) {
idempresaNew.getFuncionarioCollection().add(funcionario);
idempresaNew = em.merge(idempresaNew);
}
if (idEnderecoOld != null && !idEnderecoOld.equals(idEnderecoNew)) {
idEnderecoOld.getFuncionarioCollection().remove(funcionario);
idEnderecoOld = em.merge(idEnderecoOld);
}
if (idEnderecoNew != null && !idEnderecoNew.equals(idEnderecoOld)) {
idEnderecoNew.getFuncionarioCollection().add(funcionario);
idEnderecoNew = em.merge(idEnderecoNew);
}
em.getTransaction().commit();
} catch (Exception ex) {
String msg = ex.getLocalizedMessage();
if (msg == null || msg.length() == 0) {
FuncionarioPK id = funcionario.getFuncionarioPK();
if (findFuncionario(id) == null) {
throw new NonexistentEntityException("The funcionario with id " + id + " no longer exists.");
}
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}
public void destroy(FuncionarioPK id) throws NonexistentEntityException {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
Funcionario funcionario;
try {
funcionario = em.getReference(Funcionario.class, id);
funcionario.getFuncionarioPK();
} catch (EntityNotFoundException enfe) {
throw new NonexistentEntityException("The funcionario with id " + id + " no longer exists.", enfe);
}
Empresas idempresa = funcionario.getIdempresa();
if (idempresa != null) {
idempresa.getFuncionarioCollection().remove(funcionario);
idempresa = em.merge(idempresa);
}
Endereco idEndereco = funcionario.getIdEndereco();
if (idEndereco != null) {
idEndereco.getFuncionarioCollection().remove(funcionario);
idEndereco = em.merge(idEndereco);
}
em.remove(funcionario);
em.getTransaction().commit();
} finally {
if (em != null) {
em.close();
}
}
}
public List<Funcionario> findFuncionarioEntities() {
return findFuncionarioEntities(true, -1, -1);
}
public List<Funcionario> findFuncionarioEntities(int maxResults, int firstResult) {
return findFuncionarioEntities(false, maxResults, firstResult);
}
private List<Funcionario> findFuncionarioEntities(boolean all, int maxResults, int firstResult) {
EntityManager em = getEntityManager();
try {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
cq.select(cq.from(Funcionario.class));
Query q = em.createQuery(cq);
if (!all) {
q.setMaxResults(maxResults);
q.setFirstResult(firstResult);
}
return q.getResultList();
} finally {
em.close();
}
}
public Funcionario findFuncionario(FuncionarioPK id) {
EntityManager em = getEntityManager();
try {
return em.find(Funcionario.class, id);
} finally {
em.close();
}
}
public int getFuncionarioCount() {
EntityManager em = getEntityManager();
try {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
Root<Funcionario> rt = cq.from(Funcionario.class);
cq.select(em.getCriteriaBuilder().count(rt));
Query q = em.createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
} finally {
em.close();
}
}
}