🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #141686

Java Persistence - pytanka

#141686
From: Dariusz Marcinek
Date: Wed, 15 Oct 2008 18:37
72 lines
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-mail

Show 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