Ce a determinat genera Hibernate o clauză de actualizare?

voturi
2

Sunt folosind Hibernate pentru a selecta date dintr-o vizualizare (definite după cum urmează):

from test where trim(id)='1111'

dar Hibernate generează următoarea clauză de actualizare :

update test set id=?, dd=? where id='1111'

Oricine are vreo sugestie? Se pare că e un bug de hibernare?

Întrebat 15/12/2011 la 01:54
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
2

Hibernare poate genera uneori actualizări sub-capota pentru tine!

Acest lucru se întâmplă, de exemplu, în cazul în care starea unui obiect este sincronizat cu baza de date. Puteți trece peste acest comportament (vezi doilea glonț de mai jos), după cum este necesar ... Dar de multe ori se poate efectua unele greșeli în logica aplicației.

În cazul dumneavoastră: Există 2 motive acest lucru se poate întâmpla așa:

1) Hibernate introspects metodele publice ( de exemplu , și setteri) get pentru a seta câmpurile din fișierul de mapare, pe baza HqL pe care- l trimite ca intrare. Deci ... cum face acest efect problema? Ei bine ... dacă există o anumită logică sofisticate în getteri dvs. pentru fasole Java, care logica ar putea fi cauza hiberneaza pentru a genera unele actualizări, atunci când în cele din urmă face acest apel, deoarece aceste metode sunt invocate.

2) Există unele cazuri de colț cunoscute , în care Hibernate le face actualizări atunci când apelați selectați declarații (adică operațiuni murdare ). Acestea pot fi fixate , uneori , prin setarea „update = false“ în fișierele .hbm.xml, în locurile corespunzătoare ...

A se vedea , de asemenea: Utilizarea Enum din cauze Hibernate selectați , urmată de o declarație de actualizare

Publicat 15/12/2011 la 02:19
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more