2017-06-27 5 views
1

Ich versuchte und las andere Fragen zu diesem Problem, aber ich konnte die Logik nicht auf meinen Fall anwenden. Ich versuche, aus dieser Tabelle wählen:HQL-Fehler - Pfad für Join

@Entity 
public class LabelStatistics { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int ID; 

    @Enumerated(EnumType.STRING) 
    private AnalysisType type; 

    private String labelId; 
    private String hexLabelId; 
    private Timestamp timestamp; 

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    private List<LabelStatisticsItem> results; 

Ich versuche, die folgende Anweisung auszuführen:

@Query(value = "SELECT s1.labelId, s1.type, s1.timestamp " 
     + "FROM LabelStatistics s1 " 
     + "INNER JOIN LabelStatistics s2 on s1.labelId = s2.labelId and s1.type = s2.type and s1.timestamp < s2.timestamp") 
List<Object[]> findLatestStatisticsEntries(); 

Ich erhalte diese Störung halten:

org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! 

jemand erklären, auf Konnten Wie löst man das bitte? Mit freundlichen Grüßen

Antwort

5

Ich denke, es passiert, weil Joins nur zwischen Entitäten erlaubt sind, wo Relationen gesetzt sind.

Try WHERE statt

SELECT s1.labelId, s1.type, s1.timestamp 
FROM LabelStatistics s1, LabelStatistics s2 
WHERE s1.labelId = s2.labelId and s1.type = s2.type and s1.timestamp < s2.timestamp 
zu verwenden