Zdravim,
opravdu potrebujete zalogovat cely strom objektu? Nestacilo by vam
zalogovat jen id podrizenych objektu?
Drzel bych se toho ze toString() by melo vypsat rozumnou reprezentaci
stavu objektu samotneho, nikoli "celeho sveta".
Pokud trvate na vypsani "celeho sveta", zacykleni se jednoduse vyhnete
tim ze nebudete vypisovat objekty vsech vazeb, ale jen "vazeb dolu" -
napr. objekt faktura bude vypisovat vsechny navazane objekty "polozka",
ale objekt "polozka" nebude vypisovat "nadrazeny" objekt faktura.
Dale bych se podival na apache commons lang, tridu ToStringBuilder:
new ToStringBuilder().append(instance_nejakeho_objektu) vypisuje pekne
veci i pro kolekce/pole/mapy, takze se vyhnete konstrukcim typu
if (a instanceof Object[]).....
if(a instanceof List)....
Jindra
Oto Buchta wrote:
Zdravim,
chtel bych se zeptat, co pouzivate na logovani Hibernate Entit.
Pokud chci zalogovat jenom literaly, neni co resit.
Problem nastava ve chvili, kdy chci logovat objekt vcetne vazeb.
Pak se velice rychle dostanu pri implementaci pouheho toString() do zacykleni.
Momentalne pouzivam tri urovne:
* toString(), ktery generuje vystup jak z literalu, tak s vazeb.
Vazby prohani metodou flatToStringA()
* flatToString() generuje syntakticky stejny vystup jako toString()
a to z literalu a vazeb, ktere jsou N:1 a 1:1. Vazby prohani beanToString()
* beanToString() generuje syntakticky stejny vystup jako toString()
a to pouze z literalu
Tim mam zarucene necykleni vystupu a rozumne maly graf.
Moje otazka zni: existuje nejaky pekny nastroj, ktery umi logovat podobne
inteligentne, nebo si mam napsat plugin do IntelliJ/perlovy skript, ktery mi
bude sam generovat tyto tri metody? Teda devet, protoze mame i kolekce, ze,
a protoze ve staticke metode mohu udelat test na null logovaneho objektu, ze.
Je mi jasne, ze by to slo resit i pres Reflection, ale tak nejak nemam
Reflection moc v lasce a hlavne nevidim presne do Hibernate, abych se tam
nedostal do nejakych velkych problemu, takze se mi do toho tak nejak nechce...
Dik, tapik
--
Jindrich Vimr
E-mail: [EMAIL PROTECTED]
Cell: +420 775 638 011, Phone: +420 371 124 386
------------------------------------------------
SoftEU s.r.o.
Lochotínská 18, 301 00 Plzeň, Czech Republic
Phone +420 371 124 300, Fax: +420 373 729 301