Wie ändere ich results = getHibernateTemplate().find(query);
Ich bekomme den Fehler in dieser Zeile. Aber ich möchte das in ILogin Typ nicht von List Typ. Wie mache ich hier eine Typkonvertierung?Typenkonflikt: kann nicht von List in ILogin konvertiert werden
Antwort
Das Problem ist nicht der Typ, Umwandlung per se - es ist, dass Sie eine Abfrage ausgeführt haben, die mehrere Ergebnisse zurückgeben können, aber Sie wollen nur ein Einzel Ergebnis.
Sie möchten wahrscheinlich überprüfen, dass die resultierende Liste genau einen Wert hat (0 bedeutet, dass Login nicht gefunden wurde; mehr als 1 bedeutet wahrscheinlich, dass irgendwo ein Problem in Ihren Daten ist) und geben dann diesen ersten Wert zurück (return (ILogin) list.get(0);
).
Als etwas separate Angelegenheit, sollten Sie nicht die Daten direkt in Ihre Abfrage wie IMO einschließen. Verwenden Sie Abfrageparameter, die recht einfach in dem Ruhezustand ist:
String query = "SELECT email, id FROM Login WHERE email=? AND password=?";
Object[] parameters = { login.getEmail(), login.getPassword() };
List results = getHibernateTemplate().find(query, parameters);
if (results.size() != 1) {
// Probably throw an exception
}
// I'm assuming your mapping has been set up appropriately such that
// the returned value will *be* an `ILogin`.
return (ILogin) results.get(0);
Schließlich Sie mit ziemlicher Sicherheit nicht results
wollen eine Instanzvariable sein - es soll wohl eine lokale Variable sein, wie pro mein Beispiel oben.
Der Dummy-Weg ist zu verwenden getHibernateTemplate().find(query).get(0);
, aber dies wird zu einer Ausnahme führen, wenn keine solche Anmeldung gefunden wird.
Wie Jon sagte, überprüfen Sie Ihre Abfrage für die Leere.
Ich nehme den Frühling :).
List resultsList = getHibernateTemplate().find(query);
if (resultsList.size() == 1) {
results = (ILogin)resultsList.get(0);
} else {
// error no entity or mutiple entities
}
return results.
Dies sollte funktionieren.
- 1. Typenkonflikt: kann nicht von Doppel konvertiert
- 2. Typenkonflikt: kann nicht von java.sql.PreparedStatement zu jdbcDemo.PreparedStatement konvertiert
- 3. String kann nicht von Vertex konvertiert werden
- 4. org.json.JSONObject kann nicht in JSONArray konvertiert werden
- 5. ListList kann List nicht zugewiesen werden, warum?
- 6. String kann nicht in StringBuffer konvertiert werden
- 7. Int kann nicht in String konvertiert werden
- 8. Kann nicht in AnyObject konvertiert werden?
- 9. RDD kann nicht in Sequenz konvertiert werden
- 10. Typenkonflikt Fehler
- 11. XML kann nicht in C# -Objektliste konvertiert werden
- 12. play Framework kann nicht in java.util.List konvertiert werden
- 13. Typ 'Newtonsoft.Json.Linq.JProperty' kann nicht in 'Newtonsoft.Json.Linq.JObject' konvertiert werden
- 14. Wie konvertiert man List [Double] in Columns?
- 15. wkhtmltopdf - lokale Datei kann nicht konvertiert werden
- 16. Eclipse-: Typenkonflikt: kann nicht von String konvertieren [] zu einem
- 17. Typ Typenkonflikt: kann nicht von RegisterFragment konvertieren fragmentieren
- 18. Android: Typenkonflikt: kann nicht von EditText konvertieren boolean
- 19. Java Sammlung Typenkonflikt: kann nicht von TreeSet zu SortedSet
- 20. org.json.JSONObject kann in Android Studio nicht in JSONArray konvertiert werden
- 21. Confusion: @Override kann nicht in Annotation in Java konvertiert werden?
- 22. Void kann nicht in boolean konvertiert werden, wenn Anweisung Fehler
- 23. Python - 1.72e-05 kann nicht in einen Fließkommawert konvertiert werden
- 24. Generisches Funktionsproblem - Typ 'System.Web.UI.Control' kann nicht in 'T' konvertiert werden
- 25. Entity Framework Problem ... Datenkontext kann nicht in IDisposable konvertiert werden
- 26. Kann 'int *' für Argument '1' nicht in 'int **' konvertiert werden?
- 27. Rake abgebrochen! Kann Hash nicht in String konvertiert werden?
- 28. JSF - DataTable-Bindung verursacht Fehler (kann nicht konvertiert werden)
- 29. Wert der Zeichenfolge kann nicht in JSONArray konvertiert werden
- 30. Const TiXmlString kann nicht in const konvertiert werden std :: string &
Vielen Dank für die Hilfe, können Sie in diese Frage, die ich jetzt nach der Aktualisierung bekomme http://StackOverflow.com/Questions/4646548/error-Java-Lang-ClassCastexception – theJava
Ja, aber in der "neuen" Frage Sie haben die Auswahl nicht geändert, um keine Liste zurückzugeben. Und eine Liste kann nicht in ILogin umgewandelt werden –