Arregle la busqueda, la habia explotado antes

This commit is contained in:
Daniel Cortés
2019-06-07 01:24:09 -04:00
parent 1cd5d4703e
commit 856c5490c1
9 changed files with 54 additions and 95 deletions

2
.gitignore vendored
View File

@@ -107,3 +107,5 @@ buildNumber.properties
# End of https://www.gitignore.io/api/maven
# cosas random que pasan
nohup.out

View File

@@ -8,6 +8,8 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@@ -22,7 +24,12 @@ public class Correo {
@Column(name = "correo")
private String correo;
@ManyToMany(mappedBy = "correos")
@ManyToMany
@JoinTable(
name = "trabajador_correo",
joinColumns = @JoinColumn(name = "correo_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "trabajador_id", referencedColumnName = "id")
)
private List<Trabajador> trabajadores;
public Integer getId() {

View File

@@ -8,6 +8,8 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@@ -26,7 +28,12 @@ public class Direccion {
@Column(name = "numero")
private String numero;
@ManyToMany(mappedBy = "direcciones")
@ManyToMany
@JoinTable(
name = "trabajador_direccion",
joinColumns = @JoinColumn(name = "direccion_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "trabajador_id", referencedColumnName = "id")
)
private List<Trabajador> trabajadores;
public Integer getId() {

View File

@@ -8,6 +8,8 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@@ -22,7 +24,12 @@ public class Telefono {
@Column(name = "numero")
private String numero;
@ManyToMany(mappedBy = "telefonos")
@ManyToMany
@JoinTable(
name = "trabajador_telefono",
joinColumns = @JoinColumn(name = "telefono_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "trabajador_id", referencedColumnName = "id")
)
private List<Trabajador> trabajadores;
public Integer getId() {

View File

@@ -9,8 +9,6 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@@ -41,28 +39,13 @@ public class Trabajador {
@OneToOne(mappedBy = "trabajador")
private Usuario usuario;
@ManyToMany
@JoinTable(
name = "trabajador_correo",
joinColumns = @JoinColumn(name = "trabajador_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "correo_id", referencedColumnName = "id")
)
@ManyToMany(mappedBy = "trabajadores")
private List<Correo> correos;
@ManyToMany
@JoinTable(
name = "trabajador_telefono",
joinColumns = @JoinColumn(name = "trabajador_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "telefono_id", referencedColumnName = "id")
)
@ManyToMany(mappedBy = "trabajadores")
private List<Telefono> telefonos;
@ManyToMany
@JoinTable(
name = "trabajador_direccion",
joinColumns = @JoinColumn(name = "trabajador_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "direccion_id", referencedColumnName = "id")
)
@ManyToMany(mappedBy = "trabajadores")
private List<Direccion> direcciones;
public Integer getId() {

View File

@@ -1,10 +1,8 @@
package xyz.danielcortes.repository;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import xyz.danielcortes.framework.BaseRepository;
import xyz.danielcortes.models.Correo;
import xyz.danielcortes.models.Trabajador;
@@ -17,27 +15,15 @@ public class CorreoRepository extends BaseRepository<Correo> {
}
public List<Correo> search(String term) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Correo> query = cb.createQuery(Correo.class);
Root<Correo> r = query.from(Correo.class);
query.where(
cb.like(cb.lower(r.get("correo")), '%' + term.toLowerCase() + "%")
);
return em.createQuery(query).getResultList();
Query query = em.createQuery("SELECT c FROM Correo c WHERE LOWER(c.correo) LIKE :term ");
query.setParameter("term", "%" + term.toLowerCase() + "%");
return query.getResultList();
}
public List<Correo> search(String term, Trabajador trabajador) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Correo> query = cb.createQuery(Correo.class);
Root<Correo> r = query.from(Correo.class);
query.where(
cb.and(
cb.like(cb.lower(r.get("correo")), '%' + term.toLowerCase() + "%"),
cb.equal(cb.lower(r.get("trabajador_id")), trabajador.getId())
)
);
return em.createQuery(query).getResultList();
Query query = em.createQuery("SELECT c FROM Correo c JOIN c.trabajadores t WHERE t.id = :id AND LOWER(c.correo) LIKE :term ");
query.setParameter("id", trabajador.getId());
query.setParameter("term", "%" + term.toLowerCase() + "%");
return query.getResultList();
}
}

View File

@@ -1,10 +1,8 @@
package xyz.danielcortes.repository;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import xyz.danielcortes.framework.BaseRepository;
import xyz.danielcortes.models.Direccion;
import xyz.danielcortes.models.Trabajador;
@@ -17,33 +15,15 @@ public class DireccionRepository extends BaseRepository<Direccion> {
}
public List<Direccion> search(String term) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Direccion> query = cb.createQuery(Direccion.class);
Root<Direccion> r = query.from(Direccion.class);
query.where(
cb.or(
cb.like(cb.lower(r.get("calle")), '%' + term.toLowerCase() + "%"),
cb.like(cb.lower(r.get("numero")), '%' + term.toLowerCase() + "%")
)
);
return em.createQuery(query).getResultList();
Query query = em.createQuery("SELECT d FROM Direccion d WHERE LOWER(d.calle) LIKE :term AND LOWER(d.numero) LIKE :term");
query.setParameter("term", "%" + term.toLowerCase() + "%");
return query.getResultList();
}
public List<Direccion> search(String term, Trabajador trabajador) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Direccion> query = cb.createQuery(Direccion.class);
Root<Direccion> r = query.from(Direccion.class);
query.where(
cb.and(
cb.equal(r.get("trabajador_id"), trabajador.getId()),
cb.or(
cb.like(cb.lower(r.get("calle")), '%' + term.toLowerCase() + "%"),
cb.like(cb.lower(r.get("numero")), '%' + term.toLowerCase() + "%")
)
)
);
return em.createQuery(query).getResultList();
Query query = em.createQuery("SELECT d FROM Direccion d JOIN d.trabajadores t WHERE t.id = :id AND (LOWER(d.calle) LIKE :term OR LOWER(d.numero) LIKE :term)");
query.setParameter("id", trabajador.getId());
query.setParameter("term", "%" + term.toLowerCase() + "%");
return query.getResultList();
}
}

View File

@@ -1,10 +1,8 @@
package xyz.danielcortes.repository;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import xyz.danielcortes.framework.BaseRepository;
import xyz.danielcortes.models.Telefono;
import xyz.danielcortes.models.Trabajador;
@@ -17,27 +15,15 @@ public class TelefonoRepository extends BaseRepository<Telefono> {
}
public List<Telefono> search(String term) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Telefono> query = cb.createQuery(Telefono.class);
Root<Telefono> r = query.from(Telefono.class);
query.where(
cb.like(cb.lower(r.get("numero")), '%' + term.toLowerCase() + "%")
);
return em.createQuery(query).getResultList();
Query query = em.createQuery("SELECT t FROM Telefono t WHERE LOWER(t.numero) LIKE :term");
query.setParameter("term", "%" + term.toLowerCase() + "%");
return query.getResultList();
}
public List<Telefono> search(String term, Trabajador trabajador) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Telefono> query = cb.createQuery(Telefono.class);
Root<Telefono> r = query.from(Telefono.class);
query.where(
cb.and(
cb.like(cb.lower(r.get("numero")), '%' + term.toLowerCase() + "%"),
cb.equal(r.get("trabajador_id"), trabajador.getId())
)
);
return em.createQuery(query).getResultList();
Query query = em.createQuery("SELECT t FROM Telefono t JOIN t.trabajadores r WHERE r.id = :id AND LOWER(t.numero) LIKE :term");
query.setParameter("id", trabajador.getId());
query.setParameter("term", "%" + term.toLowerCase() + "%");
return query.getResultList();
}
}

View File

@@ -13,6 +13,7 @@
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="ff9800s_a_d"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MariaDB103Dialect"/>
<property name="hibernate.show_sql" value="true"/>
<!--<property name="hibernate.hbm2ddl.auto" value="create"/>-->
</properties>