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 # 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.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.Table; import javax.persistence.Table;
@@ -22,7 +24,12 @@ public class Correo {
@Column(name = "correo") @Column(name = "correo")
private String 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; private List<Trabajador> trabajadores;
public Integer getId() { public Integer getId() {

View File

@@ -8,6 +8,8 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.Table; import javax.persistence.Table;
@@ -26,7 +28,12 @@ public class Direccion {
@Column(name = "numero") @Column(name = "numero")
private String 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; private List<Trabajador> trabajadores;
public Integer getId() { public Integer getId() {

View File

@@ -8,6 +8,8 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.Table; import javax.persistence.Table;
@@ -22,7 +24,12 @@ public class Telefono {
@Column(name = "numero") @Column(name = "numero")
private String 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; private List<Trabajador> trabajadores;
public Integer getId() { public Integer getId() {

View File

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

View File

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

View File

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

View File

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

View File

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