Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[hibernate] setovanje query parametra okida update

[es] :: Java :: [hibernate] setovanje query parametra okida update

[ Pregleda: 2059 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.dynamic.sbb.rs.



+80 Profil

icon [hibernate] setovanje query parametra okida update01.06.2009. u 13:23 - pre 181 meseci
Imam jednostavan Query sa parametrom koji je entitet. Vrednost tog entiteta setujem pozivom setEntity (probao sam i setParameter). Upit se regularno okine i vrati očekivani resultSet, međutim, kasnije, pri flašovanju sesije okine se update nad bazom koji null-uje vrednosti jednake vrednosti parametra u tabeli iz upita (što mi naravno nije namera).
Konkretno, kod izgleda ovako :
Code:
        String query = "select c from Contact c where mate = :mate";
        Query qFriend = getSession().createQuery(query);
        qFriend.setParameter("mate", user);
        List<Contact> contactList = qFriend.list();

i, nešto kasnije,
Code:
          Session session = (Session)currentSession.get();
          session.flush();
          session.getTransaction().commit();

Hibernate na konzolu ispiše po
Code:
Hibernate: update contact set ownerId=?, mateId=?, outsiderId=? where id=? 
za svaki od recorda koje vrati gornji select, i taj kod setuje svaki mateId na null.

U specifikaciji na https://www.hibernate.org/hib_docs/v3/api/ vidim da metode setEntity i setParameter služe baš za to i ne pominju se nikakvi bočni efekti. Dakle, u čemu je ovde fazon ? Odnosno, kako se uopšte setuju vrednosti entitetskih parametara ?
it works on my machine
 
Odgovor na temu

DeYo
Dejan Vukmirovic
developer @ Mogul
Pozarevac/Bgd/Stockholm

Član broj: 36771
Poruke: 85
82.117.206.*

Sajt: www.linkedin.com/in/dejan..


Profil

icon Re: [hibernate] setovanje query parametra okida update01.06.2009. u 15:17 - pre 181 meseci
Sve sto mogu da ti ponudim su pitanja...

Sta se desava sa elementima contactList izmedju dva code snipeta koja si dao?
Mozda imas neki problem u biznis logici, a ne direktno sa Hibernateom.

Kako ti je mapiran entitet Contract?

Jesi li siguran da u oba code snipeta radis sa istom Hibernate Session instancom? Mozda tu ima neceg.
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.dynamic.sbb.rs.



+80 Profil

icon Re: [hibernate] setovanje query parametra okida update02.06.2009. u 01:46 - pre 181 meseci
Locirao sam problem i napravio workaround, ali i dalje ne kapiram šta se dešava.

Sličan ovakav algoritam koji čita iz neke druge tabele izvršava se korektno.
Kada tabelu contact suzim za polja koja mi (u ovom kontekstu) nisu neophodna, algoritam se izvrši korektno.
Konačno, ako tabelu ostavim u obliku u kojem je bila do sada, a iz mapping fajla izbrišem mapiranje jednog polja :
Code:
        <many-to-one name="outsider" class="com.firmname.community.beans.Outsider" fetch="select">
            <column name="outsiderId" />
        </many-to-one>
, algoritam se izvrši korektno.
A ja i dalje ne kapiram šta ima sporno u ovom xml snippetu. many-to-one kavih imam zilion u modelu. Mašinski generisan na osnovu baze (pomoću hibernate tools).
it works on my machine
 
Odgovor na temu

DeYo
Dejan Vukmirovic
developer @ Mogul
Pozarevac/Bgd/Stockholm

Član broj: 36771
Poruke: 85
82.117.206.*

Sajt: www.linkedin.com/in/dejan..


Profil

icon Re: [hibernate] setovanje query parametra okida update02.06.2009. u 12:30 - pre 181 meseci
Ovako postavljeno mapiranje znaci da ces imati jos jedan select upit ka bazi prilikom dohvatanja glavnog entiteta. Vidis li to u logu?

Pri tome je i setovanje atributa fetch nepotrebno jer je "select" implicitno podrazumenava default vrednost.
Probaj da prebacis na "join" da vidis sta ce se desiti.

Mada, ni ne vidim kako ovo moze da ima neke veze, ali ajd... ako vec kazes da nakon izbacivanja tog mapiranja je problem "resen".

Ono sto bih savetovao je da se obratis na Hibernate forum, ili da postujes na nihovu JIRA-u.
 
Odgovor na temu

anon156554

Član broj: 156554
Poruke: 100
*.dynamic.adsl.itsisp.net.



Profil

icon Re: [hibernate] setovanje query parametra okida update05.06.2009. u 18:08 - pre 181 meseci
Radim diplomski na temu struts2 + hibernate3. Struts2 sam skontao,ali muku mucim sa hibernate-om, jer sam nasao gomilu pdf-ova od oko 1000 strana... Da li neko ima preporuku kako se izboriti sa hibernate-om, u vidu nekih pdf-ova koje preporucuje za citanje?
Hvala
 
Odgovor na temu

dragic79
Dragic Igor
Beograd

Član broj: 140462
Poruke: 28
*.dynamic.sbb.rs.



Profil

icon Re: [hibernate] setovanje query parametra okida update05.06.2009. u 18:17 - pre 181 meseci
I ja radim diplomski vezan za hibernate s tim sto radim nekakav sajt... Ako ti je potrebno imam neke dobre tutorijale za hibernate u pdf-u. Javi mi se na mail: [email protected]
 
Odgovor na temu

DeYo
Dejan Vukmirovic
developer @ Mogul
Pozarevac/Bgd/Stockholm

Član broj: 36771
Poruke: 85
*.dynamic.sbb.rs.

Sajt: www.linkedin.com/in/dejan..


Profil

icon Re: [hibernate] setovanje query parametra okida update08.06.2009. u 20:23 - pre 181 meseci
Mislim da bi bilo pametno koristiti Spring kao middle framework kojim bi se lako integrisali Hibernate kao back-end framework i neki front-end framework.
Uz sve ostale benefite koje Spring donosi, naravno.

Spring + Hibernate:
https://www.hibernate.org/441.html
Ovde se koristi JPA konfiguracija (persistence.xml), a ne Hibernate (hibernate.cfg.xml), a Hibernate je naveden kao provider u JPA konfiguraciji.
Dodatno, za osnovnu konfiguraciju, gde se ne koristi Hibernate Search, izbaciti iz konfiguracije bean MBeanExporter.

U servisnim klasama, koje su deklarisane kao Spring beanovi, se po potrebi koristi transactional anotacija koju Spring automatski prepoznaje:
Code:
@org.springframework.transaction.annotation.Transactional
public class BaseService implements IBaseService {...


U DAO klasama, koje rade sa Hibernate mapiranim data modelom a takodje su Spring beanovi, Spring automatski ubacuje JPA persistence context:
Code:
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {       
  this.entityManager = entityManager;
}




Spring + web frameworks:
http://static.springframework..../reference/webintegration.html
Ovde je data integracija sa Struts 1.1, kao i za Faces koju sam i ja koristio.
Za Struts2 probaj da izvuces potrebnu i dovoljnu konfiguraciju sa http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html, s tim konkretno nemam prakticnog iskustva.

Kad se sve sklopi zaista tece fino, s front strane korisnikov zahtev se salje kroz bean/action web frameworka, taj zahtev se delegira kroz Spring beanove klasama koje su persistence context aware (Hibernate mapirane).


 
Odgovor na temu

[es] :: Java :: [hibernate] setovanje query parametra okida update

[ Pregleda: 2059 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.