Hibernate Criteria Javassist

langmar

Grünschnabel
Hallo,

Umgebung
spring 2.5;
hibernate core 3.3.2
tomcat 6.0.20

Ich hole per criteria-Api daten aus der DB:

Code:
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Role.class);
		criteria.add(Restrictions.eq("isRpa", "1"));
		criteria.add(Restrictions.ge("roleState", minRole));
return criteria.list();

Erhalte 3 Objekte/"DB-Zeilen", davon sind zwei als Role-Objekt in der Liste, das dritte wohl als Proxy...

Code:
[0]	Role  (id=5973)	
[1]	Role  (id=5974)	
[2]	Role_$$_javassist_2  (id=5953)

Code:
role	Role_$$_javassist_2  (id=5953)	
	activeFrom	null	
	activeTo	null	
	description	null	
	handler	JavassistLazyInitializer  (id=5976)

Komme grad alleine nicht mehr weiter - wie schaffe ich es, dass das dritte Objekt kein Proxy ist? In der Criteria? beim iterierieren brint Hibernate.initialize() leider nichts...


Viele Dsnk schonmal für alle Anworten.

Viele Grüße aus der Schweiz!
 
Hallo,

versuchs mal mit nem anderen Fetchmode:
Java:
session.createCriteria(Role.class).add(Restrictions.eq("isRpa", "1")).add(Restrictions.ge("roleState",minRole)).setFetchMode("role", FetchMode.JOIN /* EAGER */).list();

Gruß Tom
 
Hi Tom,

vielen Dank für deine Antwort. Leider hatte ich das schon erfolglos versucht. Habst rotzdem nochmal getestet, leider immer noch ohne Erfolg :(

Dantenbank technisch sind alle 3 Zeilen gleich (ausser PK und name)...

:(

viele grüsse martin
 
Hallo,

das mit dem Fecthmode war nur ein versuch...
kannte dein Modell nicht. Hätte sein können, dass deine Roles noch andere Objekte nachziehen würden und deshalb bei entsprechenden Verweisen für späteres lazy loading geproxied werden.

Gruß Tom
 
Hi Tom,

sorry, meine Antwort sollte nicht unfreundlich rüberkommen...

habe im Projekt auch den eh-cache im einsatz, habe ich aber auch schon deaktiviert leider ohne Erfolg.
Auf ein getRoleById(PK) liefert mir den Proxy :(

gibt es keine möglichkeit, aus so nem Role-Proxy-Objekt wieder explizit n Role-Objekt zu machen?
 
Hi,

ok, ich kann es übers Modell lösen...

User
|
UserRole
|
Role

userRole.getRole -> @ManyToOne(fetch = FetchMode.EAGER)

Danke Tom, hast mich auf die richtigen Weg gebracht...
 

Neue Beiträge

Zurück