• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Custom Query JPA - Odczyt bez powtórzeń

Object Storage Arubacloud
0 głosów
246 wizyt
pytanie zadane 28 sierpnia 2018 w Java przez Pablo93 Użytkownik (800 p.)

Witam 

Jestem w trakcie robienia projektu SpringBoot-Angular ktrego zadaniem jest dodawanie odczytywanie danych o rodzinie. I mam problem ponieważ :

posiadam klasę encję :

package pl.pawel.mazur.family.inteca.familiInteca.Model;

import javax.persistence.*;

@Entity
public class Child {

    private String firstName;
    @Id
    @GeneratedValue
    private int ID;
    private String pesel;
    private String secondName;
    private String sex;

    @OneToOne
    private Family family;

    @OneToOne
    @JoinColumn (name = "fatherid")
    private Father father;

    public Child (){super();}
    public Child(String firstName, String pesel, String secondName, String sex, Family family, Father father) {
        this.firstName = firstName;
        this.pesel = pesel;
        this.secondName = secondName;
        this.sex = sex;
        this.family = family;
        this.father = father;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getPesel() {
        return pesel;
    }

    public void setPesel(String pesel) {
        this.pesel = pesel;
    }

    public String getSecondName() {
        return secondName;
    }

    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Family getFamily() {
        return family;
    }

    public void setFamily(Family family) {
        this.family = family;
    }

    public Father getFather() {
        return father;
    }

    public void setFather(Father father) {
        this.father = father;
    }
}

Oraz JPA repository :

package pl.pawel.mazur.family.inteca.familiInteca.Model;

import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface ChildRepository extends JpaRepository <Child , Integer > {

    public List<Child> findByFather(Father father);

    public List<Child> findByFirstNameOrPeselOrSecondNameOrSex(String firstName, String pesel, String secondName, String sex);


    @Query(value = "select  from child", nativeQuery = true )
    List<Child> findAllActiveUsersNative();

}

W bazie danych wyglada to tak :

https://zapodaj.net/15c30751b4a16.png.html

i chodzi to że mam sześć dzieci które należy co trzech rodzin i chciałbym aby JPA pobrało z bazy ojców bez powtórzeń i aby to zrobić można w postgres wpisać 

select distinct fatherid from child ;

i zostają zwróceni ojcowie bez powtórzeń 
https://zapodaj.net/cbb5afc1b04e1.png.html

I teraz chodzi mi o to żeby to zaimplementować jakoś w repozytorium z tym ze nie mam pojęcia jak.

Stos jaki zwraca ide http://www.wklejto.pl/614251

Proszę link do projektu oraz na youtube z wideo problemu 

https://youtu.be/VWzw9F-Haa4

https://github.com/mpawel1993/familyInteca

Użyte JSONY 

localhost:8080/CreateFamily

localhost:8080/AddFatherToFamily
{"date":"data",
"firstName":"pierwszeImie",
"pesel":"pesel",
"secondName":"secImie"}

localhost:8080/AddChildToFamily
{"firstName":"pierwsze",
"pesel":"pesel",
"secondName":"secondName",
"sex":"male"}

localhost:8080/SearchChild
{"firstName":"pierwsze",
"pesel":"pesel",
"secondName":"secon

 

1
komentarz 28 sierpnia 2018 przez mbabane Szeryf (79,280 p.)
edycja 28 sierpnia 2018 przez mbabane
A w Child nie powinno być ManyToOne, a w Father OneToMany? Jeden tata może mieć kilkoro dzieci.
komentarz 28 sierpnia 2018 przez Wiciorny Ekspert (270,170 p.)
może zakłada :D że  rodziny mogą być jedno dzietne :D

2 odpowiedzi

0 głosów
odpowiedź 28 sierpnia 2018 przez Wiciorny Ekspert (270,170 p.)
wybrane 9 września 2018 przez Pablo93
 
Najlepsza

Albo znajdujesz jak kolega doradził: gotową funkcje z repozytorium, albo piszesz własną 

z tzw. NamedQuery lub  Query po prostu

dla JPQL bedzie np 

@Query("SELECT u FROM User u WHERE u.status = 1")
Collection<User> findAllActiveUsers();

w repozytorium, albo jak chcesz czysto Mysql to NATIVE QUERY 

@Query(
  value = "SELECT * FROM USERS u WHERE u.status = 1", 
  nativeQuery = true)
Collection<User> findAllActiveUsersNative();

 

1
komentarz 9 września 2018 przez Pablo93 Użytkownik (800 p.)
Dziękuje za odp zadziałało
0 głosów
odpowiedź 28 sierpnia 2018 przez mbabane Szeryf (79,280 p.)

W repo można użyć czegoś takiego jak:

findDistinctByXXXXXX

Podobne pytania

0 głosów
1 odpowiedź 621 wizyt
pytanie zadane 19 lipca 2020 w Java przez matiibal Użytkownik (620 p.)
0 głosów
1 odpowiedź 602 wizyt
pytanie zadane 17 marca 2020 w Java przez Placidus Użytkownik (580 p.)
0 głosów
3 odpowiedzi 428 wizyt
pytanie zadane 29 listopada 2019 w Java przez Q_Nick Mądrala (5,010 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...