package erp.agenda.evento.tipoevento;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.PersistenceContext;
import erp.agenda.evento.Evento;
@SuppressWarnings("serial")
@PersistenceContext(unitName = "erp")
@Entity
public class TipoEvento implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(length = 50)
private String nome;
public Long getId() {
return this.id;
}
public String getNome() {
return this.nome;
}
public void setId(Long id) {
this.id = id;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return this.nome;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof Evento)) {
return false;
}
if (((TipoEvento) object).getId() == this.id) {
return true;
}
return false;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package erp.agenda.evento;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.PersistenceContext;
import erp.agenda.evento.tipoevento.TipoEvento;
@SuppressWarnings("serial")
@PersistenceContext(unitName = "erp")
@Entity
public class Evento implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(length = 50)
private String descricao;
@Column(length = 10)
private String data;
@Column(length = 5)
private String horaInicio;
@Column(length = 5)
private String horaTermino;
@ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
private TipoEvento tipoEvento;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getHoraInicio() {
return horaInicio;
}
public void setHoraInicio(String horaInicio) {
this.horaInicio = horaInicio;
}
public String getHoraTermino() {
return horaTermino;
}
public void setHoraTermino(String horaTermino) {
this.horaTermino = horaTermino;
}
public TipoEvento getTipoEvento() {
return tipoEvento;
}
public void setTipoEvento(TipoEvento tipoEvento) {
this.tipoEvento = tipoEvento;
}
@Override
public String toString() {
return this.descricao;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof Evento)) {
return false;
}
if (((Evento) object).getId() == this.id) {
return true;
}
return false;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package erp.agenda.evento;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import arquitetura.JPA;
final class EventoDaoImp implements EventoDao {
@Override
public Collection<Evento> pesquisarRegistro(Evento evento) {
EntityManager entityManager = JPA.getEntityManagerFactory().createEntityManager();
EntityTransaction tx = entityManager.getTransaction();
tx.begin();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Evento> criteriaQuery = criteriaBuilder.createQuery(Evento.class);
Root<Evento> rootEvento = criteriaQuery.from(Evento.class);
List<Predicate> predicates = new ArrayList<Predicate>();
if (evento.getId() != null) {
predicates.add(criteriaBuilder.equal(rootEvento.get("id"), evento.getId()));
}
if (evento.getData() != null && !evento.getData().equals("")) {
predicates.add(criteriaBuilder.like(rootEvento.get("data"), "%" + evento.getData() + "%"));
}
if (evento.getDescricao() != null && !evento.getDescricao().equals("")) {
predicates.add(criteriaBuilder.like(rootEvento.get("descricao"), "%" + evento.getDescricao() + "%"));
}
if (evento.getHoraInicio() != null && !evento.getHoraInicio().equals("")) {
predicates.add(criteriaBuilder.like(rootEvento.get("horaInicio"), "%" + evento.getHoraInicio() + "%"));
}
if (evento.getHoraTermino() != null && !evento.getHoraTermino().equals("")) {
predicates.add(criteriaBuilder.like(rootEvento.get("horaTermino"), "%" + evento.getHoraTermino() + "%"));
}
if (evento.getTipoEvento() != null && evento.getTipoEvento().getId() != null) {
predicates.add(criteriaBuilder.equal(rootEvento.get("tipoEvento"), evento.getTipoEvento())); // como altero esta linha para pesquisar o objeto que está dentro de outro
System.out.println(evento.getTipoEvento().getId());
}
criteriaQuery.select(rootEvento).where(predicates.toArray(new Predicate[] {}));
List<Evento> list = entityManager.createQuery(criteriaQuery).getResultList();
tx.commit();
entityManager.close();
return list;
}
}
// como faço para pesquisar o objeto tipoEvento que está dentro de evento ?