• 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ń

0 głosów
501 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,240 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 (283,440 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 (283,440 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,240 p.)

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

findDistinctByXXXXXX

Podobne pytania

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

93,757 zapytań

142,715 odpowiedzi

323,363 komentarzy

63,353 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...