Kamil
Mikołajczyk
programista Java /
Grails
Temat: Aplikacja wykorzystująca JPA+Eclipse+JavaSE
Przemek, zrozum - zapomnij w ogóle o tym, że są jakiekolwiek id-ki, nie są one istotne. Tutaj podejście jest takie, że pracujesz na obiektach, jedyne co musisz mieć to pole id z adnotacją @Id w każdej klasie @Entity.Dalej,
1. zmień sobie wszysztkie nazwy klas na rzeczowniki w liczbie pojedynczej (Licencje -> Licencja)
2. zmień sobie nazwy pól na notację camelCase i dodaj do nich gettery i settery zgodnie z konwencją javy
3. jeśli chcesz korzystać z tych relacji w klasie Licencja, korzystaj z nich obiektowo, przykład:
Pracownik pracownik = new Pracownik();
pracownik.setPracownik("Jan Kowalski"); // to pole chyba powinno się nazywać inaczej, np. nazwisko
Klient klient = new Klient();
klient.setNazwa_klienta("Wojciech Nowak"); // patrząc na ten setter widać, dlaczego powinno być camelCase'em
TypyLicencji typLicencji = new TypyLicencji();
typLicencji.setTyplicencji("LGPL"); // znów brak camelCase
Licencja licencja = new Licencja();
licencja.setTyplicencji(typLicencji);
licencja.setPracownik(pracownik);
licencja.setKlient(klient);
jak widzisz utworzyłem obiekty, powiązałem je ze sobą a nie mam żadnego id-ka w kodzie, dalej - jeśli chcesz wyszukać obiekty, to używasz metody findera i ona zwraca Ci OBIEKT lub LISTĘ OBIEKTÓW, a nie żadne id-ki
List<Licencja> licencje = Licencja.findAll()
4. a to o czym Jarek pisał nt. konstruktora to chyba chodzi o to, że w tym konstruktorze przypisujesz wartość pola id, które nie jest nawet parametrem konstruktora, więc pogrubiona linijka oznacza tyle co this.id = this.id;
public Licencje( Klient nazwa_klienta, Pracownik pracownik, String data_wydania, TypyLicencji typlicencji, boolean realizacja) {
this.id = id;
this.klient = nazwa_klienta;
this.pracownika = pracownika;
this.data_wydania = data_wydania;
this.typlicencji = typlicencji;
this.realizacja = realizacja;
}