Article View: pl.comp.lang.java
Article #141686Java Persistence - pytanka
From: Dariusz Marcinek
Date: Wed, 15 Oct 2008 18:37
Date: Wed, 15 Oct 2008 18:37
72 lines
2893 bytes
2893 bytes
Witam
Przyszlo mi sie ostatnio zmierzyc z EJB3 i wynalazlem kilka problemow z
ktorymi coprawda moge sobie poradzic ale dreczy mnie ze cos nie dziala tak
jak (moj) zdrowy rozsadek by podpowiadal.... Pomozecie ? ;)
##### 1
Zlozmy ze mamy 2 relacje dwukierunkowe jeden do wielu w entity Person:
...
class Person {
...
@OneToMany(mappedBy="person", cascade={CascadeType.ALL},
fetch=FetchType.EAGER)
private List<Phone> phoneList;
@OneToMany(mappedBy="person", cascade={CascadeType.ALL},
fetch=FetchType.EAGER)
private List<Email> emailList;
...
}
W obu encjach: Phone i Email mamy pole zaanotowane jak nizej
@JoinColumn(name = "PERSON_ID", referencedColumnName="ID")
@ManyToOne(cascade={CascadeType.ALL})
private Person person;
Pytania:
a) dlaczego przy conajmniej dwoch listach i fetch ustawionym na EAGER
wyrzucany jest wyjatek "cannot simultaneously fetch multiple bags" ??
b) czy jest jakies inne rozwiazanie oprocz tych ktore znalazlem w sieci tj.
uzycie interfejsu Set zamiast Listy lub hibernatowej annotacji @IndexColumn?
#### 2
a) Dlaczego przy jednokierunkowej relacji jeden do wielu:
...
class Person {
...
@Column(name="ID")
private long id;
@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
@JoinColumn(name="PERSON_ID")
private List<Phone> phoneList;
...
}
przy persistowaniu entity typu Person w encjach Phone z listy, pole
PERSON_ID w tabeli Phone nie jest ustawiane z id obiektu Person?
b) Czy jedynym wyjsciem jest tu uzycie relacji dwukierunkowej ?
#### 3
Zalozmy ze mamy obiekt typu Person z lista encji Phone jak wyzej - jezeli
potrzebujemy pojedynczy obiekt ta lista telefonow jest nam potrzebna ale gdy
pobieramy wiele osob nie potrzebujemy listy telefonow dla kazdej z nich -
nie chcemy ani wypelniania LAZY ani EAGER - jak to rozwiazac?
--
Pozdrawiam
Dariusz Marcinek
Technical Details
Message-ID:
<gd5da8$esh$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: "Dariusz Marcinek" <dariusz.marcinek@WYTNIJ.gazeta.pl> Newsgroups: pl.comp.lang.java Subject: Java Persistence - pytanka Date: Wed, 15 Oct 2008 20:37:56 +0200 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 74 Message-ID: <gd5da8$esh$1@inews.gazeta.pl> NNTP-Posting-Host: sasanka.res.pl X-Trace: inews.gazeta.pl 1224095881 15249 91.196.9.18 (15 Oct 2008 18:38:01 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Wed, 15 Oct 2008 18:38:01 +0000 (UTC) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-Priority: 3 X-RFC2646: Format=Flowed; Original X-User: dariusz.marcinek X-Antivirus: avast! (VPS 081014-0, 2008-10-14), Outbound message X-MSMail-Priority: Normal X-Antivirus-Status: Clean X-Newsreader: Microsoft Outlook Express 6.00.2900.5512 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit