Erst einmal solltest du createQuery und createSQLQuery nicht verwechseln, ersteres wird benutzt um HQL-Queries zu erstellen, letzteres für native SQL-Queries, die aber selten benutzt werden.
In HQL-Queries benutzt du nur die Klassennamen und Felder anstatt der Tabellennamen.
createQuery() liefer dir nur ein Query-Objekt, das du benutzen kannst um die Query auszuführen.
Deine Abfrage eher so aussehen:
Code:
public String login() {
// Methode zur Überprüfung der Anmeldedaten
// 1. Schritt: Es wird überprüft ob der Benutername in der Datenbank
// vorhanden ist
Session session = InitSessionFactory.getInstance().getCurrentSession();
Transaction tx = session.beginTransaction();
try {
Query temp;
temp = session.createQuery("Select Count(*) From User Where loginname = :name");
temp.setParameter("name", loginname);
Number count = (Number) temp.uniqueResult();
if (temp.equals(0)) {
return "name"; // Der Name des Users ist nicht vorhanden
} else {
// 2. Schritt: Es wird überprüft ob das Password für den
// Benutzernamen gültig ist
temp = session.createQuery("Select Count(*) From tuser Where loginname = :name and password = :password");
temp.setParameter("name", loginname);
temp.setParameter("password", password);
count = (Number) temp.uniqueResult();
if (temp.equals(0)) {
// User ist vorhanden und das Passwort ist richtig
return "richtig";
} else {
return "falsch"; // Usernamen ist richtig aber das Passwort ist
// falsch
}
}
}finally {
tx.commit();
session.close();
}
}
Rating ist willkommen. ;-)