From 856c5490c16925948ec9bc39b965e2c810fc2785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Fri, 7 Jun 2019 01:24:09 -0400 Subject: [PATCH] Arregle la busqueda, la habia explotado antes --- .gitignore | 2 ++ .../java/xyz/danielcortes/models/Correo.java | 9 ++++- .../xyz/danielcortes/models/Direccion.java | 9 ++++- .../xyz/danielcortes/models/Telefono.java | 9 ++++- .../xyz/danielcortes/models/Trabajador.java | 23 ++---------- .../repository/CorreoRepository.java | 30 +++++----------- .../repository/DireccionRepository.java | 36 +++++-------------- .../repository/TelefonoRepository.java | 30 +++++----------- src/main/resources/META-INF/persistence.xml | 1 + 9 files changed, 54 insertions(+), 95 deletions(-) diff --git a/.gitignore b/.gitignore index a87a23a..9c0be85 100644 --- a/.gitignore +++ b/.gitignore @@ -107,3 +107,5 @@ buildNumber.properties # End of https://www.gitignore.io/api/maven +# cosas random que pasan +nohup.out diff --git a/src/main/java/xyz/danielcortes/models/Correo.java b/src/main/java/xyz/danielcortes/models/Correo.java index 6df62ab..d95165a 100644 --- a/src/main/java/xyz/danielcortes/models/Correo.java +++ b/src/main/java/xyz/danielcortes/models/Correo.java @@ -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 trabajadores; public Integer getId() { diff --git a/src/main/java/xyz/danielcortes/models/Direccion.java b/src/main/java/xyz/danielcortes/models/Direccion.java index 49bccf2..d1abee3 100644 --- a/src/main/java/xyz/danielcortes/models/Direccion.java +++ b/src/main/java/xyz/danielcortes/models/Direccion.java @@ -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 trabajadores; public Integer getId() { diff --git a/src/main/java/xyz/danielcortes/models/Telefono.java b/src/main/java/xyz/danielcortes/models/Telefono.java index 218e855..e290e4b 100644 --- a/src/main/java/xyz/danielcortes/models/Telefono.java +++ b/src/main/java/xyz/danielcortes/models/Telefono.java @@ -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 trabajadores; public Integer getId() { diff --git a/src/main/java/xyz/danielcortes/models/Trabajador.java b/src/main/java/xyz/danielcortes/models/Trabajador.java index ead7487..ac2b4c8 100644 --- a/src/main/java/xyz/danielcortes/models/Trabajador.java +++ b/src/main/java/xyz/danielcortes/models/Trabajador.java @@ -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 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 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 direcciones; public Integer getId() { diff --git a/src/main/java/xyz/danielcortes/repository/CorreoRepository.java b/src/main/java/xyz/danielcortes/repository/CorreoRepository.java index 6d10274..0092e7b 100644 --- a/src/main/java/xyz/danielcortes/repository/CorreoRepository.java +++ b/src/main/java/xyz/danielcortes/repository/CorreoRepository.java @@ -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 { } public List search(String term) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(Correo.class); - Root 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 search(String term, Trabajador trabajador) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(Correo.class); - Root 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(); } } diff --git a/src/main/java/xyz/danielcortes/repository/DireccionRepository.java b/src/main/java/xyz/danielcortes/repository/DireccionRepository.java index 7c41d30..c72e15e 100644 --- a/src/main/java/xyz/danielcortes/repository/DireccionRepository.java +++ b/src/main/java/xyz/danielcortes/repository/DireccionRepository.java @@ -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 { } public List search(String term) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(Direccion.class); - Root 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 search(String term, Trabajador trabajador) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(Direccion.class); - Root 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(); } } diff --git a/src/main/java/xyz/danielcortes/repository/TelefonoRepository.java b/src/main/java/xyz/danielcortes/repository/TelefonoRepository.java index c922865..3c3bb0c 100644 --- a/src/main/java/xyz/danielcortes/repository/TelefonoRepository.java +++ b/src/main/java/xyz/danielcortes/repository/TelefonoRepository.java @@ -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 { } public List search(String term) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(Telefono.class); - Root 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 search(String term, Trabajador trabajador) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery query = cb.createQuery(Telefono.class); - Root 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(); } } diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index be7fc41..7f9b292 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -13,6 +13,7 @@ +