Arbeiten mit HQL, auf dieser vereinfachten Szenario geben:HQL-Abfrage mit LEFT JOIN und wo nicht Ergebnisse
String query = "SELECT new CustomUser(" +
"user.userID AS id," +
"user.username AS username)" +
"FROM User AS user" +
" LEFT JOIN user.friends as friend " +
" where user.username like (:query)" +
" OR " +
" friend.username like (:query) ";
Dies wird etwas zurückzugeben nur diejenigen Benutzer, die mindestens einen Freund haben, aber ich möchte Benutzer erhalten, indem eine Bedingung, jenseits von Freunden oder nicht.
- Dynamische Instantiierung wird wegen Domain-Anforderungen verwendet
- ich bemerkt habe, dass es alle Benutzer gibt, Freunde oder nicht hat, wenn es keine Bedingung für die Join-Tabelle ist (friend.username wie (: query))
Das sind meine Tabellen:
Benutzer
Freund
@Id
private Integer friendID;
@Column(name = "username")
private String username;
@ManyToOne(cascade = CascadeType.DETACH)
@JoinColumn(name="userid")
private User user;
- Hinweis: es funktioniert, wie ich auf nativen SQL
Danke, aber ich bekomme das gleiche –
können Sie mir 2 Tabelle, Benutzer und Freunde zeigen? –
Ja, ich habe meine Frage bearbeitet –