2017-01-20 2 views
2

Meine Frage bezieht sich auf die Art und Weise, wie Spring-Daten die Abfrage generieren.Federdaten finden durch innere Beziehung

Ich habe zwei Entitäten: Nachricht, Absender

@Entity 
public class Message extends BaseEntity { 
@ManyToOne 
protected Account sender; 
} 

Ich habe einen Anruf

messageDao.findBySenderId(Long id) 

Das Ergebnis Abfrage aus den beiden zwei Tabellen mit einem left outer join zwischen den beiden Tabellen aller Spalten ist, aber meine Erwartung war einfach, nur aus der Nachrichtentabelle where sender_id = den übergebenen Wert auszuwählen.

Gibt es also eine Möglichkeit, nur die erste Nachrichtenentität zu erzwingen und sich nicht mit der anderen zu verbinden? Ich möchte einfache Bedingung in der where-Klausel von findBy nicht mit benutzerdefinierten @Query

Antwort

0

Siehe Ich denke, Hibernate tut ein LEFT JOIN weil @ManyToOneoptional = true (Standard) ist.

Versuchen:

@ManyTone(optional = false) 

Und Sie werden sehen, Hibernate tun eine Abfrage ohne JOIN, als Sie erwartet haben.