Kryptaesthesie
Erfahrenes Mitglied
Hibernate - zwei Tabellenspalten für WHERE zusammenfügen - wie?
Guten Tag,
ich möchte gerne mit Hibernate ein AND und ein OR verknüpfen.
Aufbau: a ODER (b UND c)
So in etwa
Ich habe es mit folgendem Code versucht, aber da wird immer nur die eine Bedingung ausgeführt. Die UND-Verknüpfung bleibt unangetastet. Seht ihr den Fehler?
Also nach Username abfragen funktioniert, aber wenn ich nach Vor- u. Nachname abfrage, dann kommt eine leere Liste zurück.
EDIT:
Okay, den Denkfehler habe ich gefunden, das Problem aber noch nicht gelöst!
in dem OR-Zweig, wo die beiden Bedingungen verknüpft werden, da müssen die Tabellenspalten forename und surname zusammen mit dem Suchbegriff abgefragt werden!
So könnte ein fertiger SQL-Befehl aussehen:
Ziel soll es sein, dass entweder nach dem Usernamen, oder nach Vor- u. Nachname gesucht werden kann.
Wie setze ich das in Hibernate um?
Danke schon mal für eure Hilfe!
Gruß
Gerrit
Guten Tag,
ich möchte gerne mit Hibernate ein AND und ein OR verknüpfen.
Aufbau: a ODER (b UND c)
So in etwa
Ich habe es mit folgendem Code versucht, aber da wird immer nur die eine Bedingung ausgeführt. Die UND-Verknüpfung bleibt unangetastet. Seht ihr den Fehler?
Code:
Criteria crit = getSession().createCriteria(User.class);
Criterion critUsername = Restrictions.ilike("username", squery);
Criterion critForename = Restrictions.ilike("forename", squery);
Criterion critSurname = Restrictions.ilike("surname", squery);
LogicalExpression andExprName = Restrictions.and(critForename, critSurname);
// Kriterium für Username und Name mit OR verknüpfen
LogicalExpression orExp = Restrictions.or(critUsername, andExprName);
crit.add(orExp);
crit.addOrder(Order.asc("forename"));
List<User> user = crit.list();
return user;
Also nach Username abfragen funktioniert, aber wenn ich nach Vor- u. Nachname abfrage, dann kommt eine leere Liste zurück.
EDIT:
Okay, den Denkfehler habe ich gefunden, das Problem aber noch nicht gelöst!
in dem OR-Zweig, wo die beiden Bedingungen verknüpft werden, da müssen die Tabellenspalten forename und surname zusammen mit dem Suchbegriff abgefragt werden!
So könnte ein fertiger SQL-Befehl aussehen:
Code:
select
USER_ID,
username,
forename,
surname,
active
from
USERS
where
(
username = 'Rainer Nonsens'
or (
(forename || ' ' || surname) = 'Rainer Nonsens'
)
)
Ziel soll es sein, dass entweder nach dem Usernamen, oder nach Vor- u. Nachname gesucht werden kann.
Wie setze ich das in Hibernate um?
Danke schon mal für eure Hilfe!
Gruß
Gerrit
Zuletzt bearbeitet: