2009-07-13 6 views
0

hoffe jeder ist cool.Ich habe versucht, etwas mit Spring-Winterschlaf zu tun, aber es ist immer noch ein Fehler.Ich bin sehr neu dazu.Ich brauche ein wenig Hilfe.Eine POJO Klasse Users.i möchten ein Benutzer zurückzukehren Objekt von username.While ich kein Problem hatte Nutzer von ID-Objekt zurück, indem sie dieseArbeiten mit Objekt mit Frühling und Winterschlaf

return (Users) getHibernateTemplate().get(Users.class, id); 

scheint es für mich eine Herausforderung zu sein bekommen die Nutzer nach Username-Objekt. Ich habe diese versucht

List<Users> users = getHibernateTemplate().find("from Users u where u.username=?",username); 
return users.get(0); 

und selbst diese

return (Users)getHibernateTemplate().find("from Users u where u.username=?",username).get(0); 

, wie soll ich tun it.and, was der richtige Weg ist, eine Reihe von Benutzer-Objekten und/oder List.Thanks zum Lesen dieser zurückzukehren .

Antwort

1

vielleicht können Sie das versuchen?

List l =getHibernateTemplate().find("from Users u where u.username=?",new Object[]{username}); 
if (l.size() > 0) 
return (User)l.get(0); 
else 
return null; 
+2

Bitte nicht die gefürchtete 'Rückkehr Null' - das fragt nach einer NullPointerException irgendwo kurz nachdem die Methode mit dem obigen Code aufgerufen wird. Mein bevorzugter Weg, um mit dieser Situation umzugehen, wäre eine UserNotFoundException zu werfen. –

+2

Ich glaube nicht, dass Sie so verallgemeinern können, ohne den Kontext der Operation zu kennen. Die Rückgabe einer Null kann durch einen Schnittstellenvertrag für alles, was wir wissen, definiert werden. – skaffman

+0

Ich habe ein neues Benutzerobjekt.thanks dudes.What über Arrays von Benutzern zurückgegeben? Angenommen, ich möchte alle Benutzer des Namens Francis zurückgeben? –

2

Versuchen Sie, diese

Query q = session.createQuery("select * from Users u where u.username=:username"); 
q.setString("username", username); 
+0

Dieses ist auch mein bevorzugte Art, dies zu handhaben. Ich habe festgestellt, dass das Benennen meiner Parameter es einfacher macht zu verstehen, was der Code macht. –

1

Ein weiterer besseren Weg Kriterien zu verwenden ist. Siehe das Beispiel unten.

DetachedCriteria deCriteria = DetachedCriteria.forClass(User.class, "u"); 
    Criteria criteria = deCriteria.getExecutableCriteria(session); 

    criteria.add(Restrictions.eq("u.username", username)); 
    List<User> userList = criteria.list(); 
+0

Ich werde versuchen, aber ich denke, ich werde es mit der Spring-Funktion findbycriteria versuchen und sehen, wie es gehen wird. Dank –

+0

Sie müssen nicht aufgefordert, SQL für triviale Fälle zu schreiben, während Hibernate/Spring Art von mächtigen APIs . –