JAVA, maven, hibernate wyszukiwanie w bazie danych SQL

Odpowiedz Nowy wątek
2019-06-10 18:32
0

Cześć, stworzyłem aplikacje przy użyciu Mavena i łączę się z bazą danych MySQL. Wszystko, wydaje się, że działa poprawnie, tylko przy wyszukiwaniu danych z bazy i ich wyświetlaniu w konsoli jest problem z kluczami obcymi - mianowicie nie wyświetla się zawartość danej komórki tylko nazwa pakietu i jakiś zlepek znaków.
Pytanie brzmi jak zrobić żeby w tym miejscu wyświetlało rzeczywistą zawartość komórki.

KOD:

Uzytkownik.java

package pakiet.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity

public class Uzytkownik {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String User;
    private String Password;
    @OneToOne
    private Adres adres;
    @OneToOne(mappedBy = "uzytkownik")
    private Wypozyczone_ksiazki wypozyczone_ksiazki;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getUser() {
        return User;
    }

    public void setUser(String user) {
        User = user;
    }

    public String getPassword() {
        return Password;
    }

    public Wypozyczone_ksiazki getWypozyczone_ksiazki() {
        return wypozyczone_ksiazki;
    }

    public void setWypozyczone_ksiazki(Wypozyczone_ksiazki wypozyczone_ksiazki) {
        this.wypozyczone_ksiazki = wypozyczone_ksiazki;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public Adres getAdres() {
        return adres;
    }

    public void setAdres(Adres adres) {
        this.adres = adres;
    }

}

Wypozyczone_ksiazki.java

package pakiet.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity

public class Wypozyczone_ksiazki {

    @Id
    @GeneratedValue
    private long id;
    private String Data_od;
    private String Data_do;
    @OneToOne
    private Uzytkownik uzytkownik;

    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getData_od() {
        return Data_od;
    }
    public void setData_od(String data_od) {
        Data_od = data_od;
    }
    public String getData_do() {
        return Data_do;
    }
    public void setData_do(String data_do) {
        Data_do = data_do;
    }
    public Uzytkownik getUzytkownik() {
        return uzytkownik;
    }
    public void setUzytkownik(Uzytkownik uzytkownik) {
        this.uzytkownik = uzytkownik;
    }

}

Adres.java

package pakiet.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.GenerationType;
@Entity

public class Adres {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String Ulica;
    private String Numerdomu;
    private String Miasto;
    private String KodPocztowy;
    @OneToOne(mappedBy = "adres")
    private Uzytkownik uzytkownik;

    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getUlica() {
        return Ulica;
    }
    public void setULica(String ulica) {
        Ulica = ulica;
    }
    public String getNumerdomu() {
        return Numerdomu;
    }
    public void setNumerdomu(String numerdomu) {
        Numerdomu = numerdomu;
    }
    public String getMiasto() {
        return Miasto;
    }
    public void setMiasto(String miasto) {
        Miasto = miasto;
    }
    public String getKodPocztowy() {
        return KodPocztowy;
    }
    public void setKodPocztowy(String kodPocztowy) {
        KodPocztowy = kodPocztowy;
    }

}

Klasa do wyszukiwania:

package pakiet;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import pakiet.domain.Uzytkownik;

public class FindAndModify {

    public static void main(String[] args) {
        EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
        EntityManager entityManager = entityManagerFactory.createEntityManager();

        entityManager.getTransaction().begin();

        Uzytkownik uzytkownik = entityManager.find(Uzytkownik.class, 1L);
        System.out.println(""+uzytkownik.getUser());
        System.out.println(""+uzytkownik.getAdres());
        System.out.println(""+uzytkownik.getWypozyczone_ksiazki());

        entityManager.getTransaction().commit() ;

        entityManager.close();
        entityManagerFactory.close();

    }

}

Po uruchomieniu klasy FindAndModify konsola wyświetla dane:

Jan
[email protected]
[email protected]

a moja baza zawiera takie dane:

Uzytkownik:

 # id, Password, User, adres_id
'1',       'afshhs', 'Jan',        '1' 

Adres:

# id, KodPocztowy, Miasto, Numerdomu, Ulica
'1', '57-100',           'Wroclaw', '10',           'Warszawska'

Wypozyczone_ksiazki:

# id, Data_do, Data_od, uzytkownik_id
'1',     '15 maja', '15 czerwca', '1'

Chodzi o to, żeby po wpisaniu komendy z pliku FindAndModify

        Uzytkownik uzytkownik = entityManager.find(Uzytkownik.class, 1L);
        System.out.println(""+uzytkownik.getUser());
        System.out.println(""+uzytkownik.getAdres());
        System.out.println(""+uzytkownik.getWypozyczone_ksiazki());

Konsola wyświetliła:
Jan
(konkretny adres, id adresu lub np. nazwę miasta - jak to ustawić?)
(jw. konkretną informację z tabeli wypozyczone_ksiazki lub calą informację z tej kolumny)

Dziękuję z góry za wszelką pomoc

Pozostało 580 znaków

2019-06-11 18:48
0

Mam taki kod:

        TypedQuery<Uzytkownik> query = entityManager.createQuery("select e from Uzytkownik e where e.User= 'Adam' ", Uzytkownik.class);
        List<Uzytkownik> uzytkownicy = query.getResultList();
        for (Uzytkownik uzytkownik : uzytkownicy)
        {
        System.out.println(uzytkownik.getUser());
        System.out.println(uzytkownik.getAdres());
        }

pojawia się taki błąd:
the type list is not generic it cannot be parameterized with arguments <uzytkownik>

co jest źle?

Pokaż importy w danej klasie - kixe52 2019-06-11 22:58

Pozostało 580 znaków

2019-06-11 23:05
0
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

import antlr.collections.List;
import pakiet.domain.Uzytkownik;

Pozostało 580 znaków

2019-06-11 23:07

Zmień to

mancher napisał(a):
import antlr.collections.List;

na

import java.util.List
edytowany 1x, ostatnio: kixe52, 2019-06-11 23:07
Dziękuję :) - mancher 2019-06-11 23:09

Pozostało 580 znaków

2019-06-12 19:00
0

A jak wykonać zapytanie Query w JPQL aby wyszukiwało dane z dwóch tabel?

Pozostało 580 znaków

2019-06-12 19:01
0

PRO TIP: wszystko co potrzebujesz zrobiono przez Tobą tysiące razy, spora część tego jest udokumentowana w internecie. Wpisz JPQL query join :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0