2017-06-27 1 views
1

J'ai essayé et lu d'autres questions concernant ce problème, mais je n'ai pas pu appliquer la logique à mon cas. Je suis en train de sélectionner ce tableau:Erreur HQL - Chemin attendu pour la jointure

@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; 

Je suis en train d'exécuter la déclaration suivante:

@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(); 

Je continue à obtenir cette erreur:

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

Quelqu'un pourrait-il expliquer sur comment résoudre ceci s'il vous plaît? Cordialement

Répondre

5

Je suppose que cela arrive parce que les jointures sont autorisées uniquement entre les entités où les relations sont définies.

Essayez d'utiliser à la place OÙ

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