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-10 18:34
2

Bierzesz się za pisanie apki webowej, a nie masz ogarniętych podstaw Javy SE.

Musisz nadpisać metodę toString() w klasach, które chcesz printować.

ps jesteś na początku pisania tego CRUDa, więc raz dwa zmieniaj to na język angielski. Nie używaj polskiego.

edytowany 1x, ostatnio: kixe52, 2019-06-10 18:36

Pozostało 580 znaków

2019-06-10 18:57
0

Dziękuję za pomoc :)

Pozostało 580 znaków

2019-06-10 18:59
1

Kolejna sprawa - relacja Uzytkownik - Wypozyczone_ksiazki. Niby książki w liczbie mnogiej, czyli użytkownik może wypożyczyć kilka książek, a jednak masz OneToOne. Zdecyduj się :)

Pozostało 580 znaków

2019-06-10 19:17
0

No tak, poprawię.

Dodałem w klasie Adres,java metodę

         public String toString()
{
                return Miasto;
            }

Czy da się zrobić żeby wyświetlało wszystkie tabele a nie tylko Miasto?

Pozostało 580 znaków

2019-06-10 19:19
1

Słowo klucz: nadpisać.
Próbowałeś szukać w googlach? :)
Nawet IDE jest w stanie wygenerować za Ciebie toString() po kilku kliknięciach.

https://www.baeldung.com/java-tostring

generatory to zło, bo zakładają że przy Sys'oucie zawsze chcesz wyświetlać membersy klasy które sobie zaznaczasz gdzieś tam w checkboxach, a może akurat chcesz wyświetlić wynik dodawania 2+2? :D - au7h 2019-06-11 01:01
Myślę, że na chwilę obecną Twórcy posta by to nie zaszkodziło :) - kixe52 2019-06-11 01:02

Pozostało 580 znaków

2019-06-10 19:36
0

Dzięki, a mógłbyś mi jeszcze pomóc jak zdefiniować metodę FindBy?

Pozostało 580 znaków

2019-06-10 19:56
0

FindBY co?

Pozostało 580 znaków

2019-06-10 20:00
0

findByID oraz findByProperties(property, value) i jeszcze listAll()

Nie zrobię za CIebie całego zadania. Wpisz w google, jest multum przykładów, przeanalizuj je. Inaczej nie zrozumiesz co i jak. - kixe52 2019-06-10 20:15

Pozostało 580 znaków

2019-06-10 20:25
0

nie chcę gotowca tylko pomocy jak to zdefiniować.

Pozostało 580 znaków

2019-06-10 20:35
1

W swoim poście wyżej użyłeś już metody find, gdzie podajesz klasę oraz id. Wykorzystaj to.

Jeden z pierwszych linków z googlea: https://www.objectdb.com/java/jpa/persistence/retrieve

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