Ahoj,

no my jsem si nakonec napsali vlastni implementaci toString, jednu jedinou, ktera bere v potaz detekci jiz generovanych objektu a u nich uz se nepousti do vypisu atributu. Zaroven umi poznat, ze se jedna o neinicializovany objekt od Hibernate (proxy nebo kolekce) a ty se take nesnazi vypsat. Tu jsme nakonec pomoci AspectJ dotlacili vsem potrebnym objektum.

V podstate jsme malinko vylepsili implemtaci z commons-lang, ktera je zbytecne komplikovana a jenom detekuje cykly, kdezto my jsme chteli, aby se objekt nezapisoval podruhe i mimo cyklus ...

S pozdravem

Oto Buchta napsal(a):
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

--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic

Odpovedet emailem