EJB3 problem z mapowaniem kolumn
dampel - 16-02-2007 00:01
EJB3 problem z mapowaniem kolumn
Witam,
Pisze sobie takiego Entity Beana, ktory ma w srodku kolekcje innych Entity, czyli cos takiego:
@Entity @Table(name = "BOOK") public class BookEntity { @Column(name = "RECID") @Id private long id; @OneToMany (mappedBy = "book", fetch = FetchType.EAGER, cascade = {CascadeType.ALL}) private Collection<PageEntity> pagesInternal = new ArrayList<PageEntity>();
// problem : private PageEntity[] pages; .... }
@Entity @Table(name = "PAGE") public class PageEntity { @Column(name = "RECID") @Id private long id; @ManyToOne @JoinColumn(name = "BOOKID") private BookEntity book;
.... }
Problem mam taki, ze chcialbym aby zmienna pages nie byla mapowana na zadna kolumne do bazy danych. Ktos moze wie jak to rozwiazac ?? Jakas annotacja bo nic konkretnego nie moge znalesc. Potrzebuje to aby dane przetransportowac do C# przez WebService, wiec robie w metodzie webowej foreach po pagesInternal i przekladam do tablicy pages...
Moze troche namieszalem, a moze nie ... ;)
-- Pozdrawiam dampel
MiSt - 16-02-2007 00:01
dampel napisał(a): > Witam, >
> Problem mam taki, ze chcialbym aby zmienna pages nie byla mapowana na > zadna kolumne do bazy danych. Ktos moze wie jak to rozwiazac ?? Jakas > annotacja bo nic konkretnego nie moge znalesc.
Zobacz adnotacje: @Transient
-- MiSt
dampel - 16-02-2007 00:01
MiSt wrote: > Zobacz adnotacje: @Transient >
dzieki za podpowiedz ... juz probowalem ale przy probie przelozenia obiektow z kolekcji pagesInternal do tablicy pages:
pages = new PagesEntity[pagesInternal.size()]; pagesInternal.toArray(pages);
dostaje exception:
ERROR [[BookService]] Servlet.service() for servlet BookService threw exception java.lang.StackOverflowError at java.util.WeakHashMap.get(WeakHashMap.java:340) at org.jboss.xb.binding.introspection.ClassInfos.getC lassLoaderCache(ClassInfos.java:165) at org.jboss.xb.binding.introspection.ClassInfos.getC lassInfo(ClassInfos.java:110) at org.jboss.xb.binding.introspection.FieldInfo.getFi eldInfo(FieldInfo.java:125) at org.jboss.xb.binding.sunday.marshalling.Marshaller Impl.getJavaValue(MarshallerImpl.java:1216) at org.jboss.xb.binding.sunday.marshalling.Marshaller Impl.getChildren(MarshallerImpl.java:1206) at org.jboss.xb.binding.sunday.marshalling.Marshaller Impl.getElementValue(MarshallerImpl.java:1136)
Wyglada mi to ze nie da sie przelozyc obiektow z kolekcji do tablicy. Wydaje mi sie, ze wymaga to innego podejscia ... chyba kolekcja pages powinna byc z obiektow @Embeddable a nie @Entity ... Bede cos kombinowal dalej.
-- Pozdrawiam dampel
shmayek - 16-02-2007 00:01
dampel wrote: > pages = new PagesEntity[pagesInternal.size()]; > pagesInternal.toArray(pages); > > dostaje exception: > > ERROR [[BookService]] Servlet.service() for servlet BookService threw > exception > java.lang.StackOverflowError > > Wyglada mi to ze nie da sie przelozyc obiektow z kolekcji do tablicy. > Wydaje mi sie, ze wymaga to innego podejscia ... chyba kolekcja pages > powinna byc z obiektow @Embeddable a nie @Entity ...
Wyglada na to ze exception leci z powodu "zapetlania sie obiektow". Jeden obiekt (Book) zawiera kolekcje innych obiektow (Pages), ktore z kolei zawieraja referencje do obiektu wlasciciela (Book). Mysle ze tu trzeba szukac przyczyny problemow (niestety nie wiem jak to rozwiazac).
-- shmayek GT: shm PL
Bartek Soin - 16-02-2007 00:02
Wyrzuć pole book z klasy PageEntity albo oznacz je jako lazy:
public class PageEntity {
.... @ManyToOne(fetch = FetchType.LAZY) private BookEntity book;
....
}
dampel - 17-02-2007 00:16
Bartek Soin wrote: > Wyrzuć pole book z klasy PageEntity albo oznacz je jako lazy: >
Witam,
Dzieki za podpowiedzi. Niestety nie pomaga wyrzucenie pola book z PageEntity, poniewaz mam relacje:
public class BookEntity { ....
@OneToMany (mappedBy = "book", fetch = FetchType.EAGER, cascade = {CascadeType.ALL}) private Collection<PageEntity> pagesInternal = new ArrayList<PageEntity>();
.... }
Oznaczenie jako LAZY tez nie bo przy pagesInternal.toArray(pages); nastepuje pobranie danych. Jedynie co pomaga w takim przypadku to zrobienie konstruktora z wszystkimi paramatrami klasy PageEntity za wyjatkiem zmiennej book lub ustawieniem jej na null i do kolekcji pages stworzenie nowych obiektow.
A moze ktos wie jak zamapowac do WSDL'a np. java.util.Collection ??
-- Pozdrawiam dampel
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.plabsolwenci.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|