2017-11-01 5 views
0

Ich habe eine Klasse Api, die eine Liste von Daten enthält:PPV in Klausel in Abfrage

public class Api { 
    private String id; 

    @ManyToMany 
    private List<Data> datas; 
} 

Ich habe ein ApiRepository crud Repository erstreckt, wo ich eine Abfrage definiert haben:

@Query(value="select api from Api api where :data in (api.datas)") 
public List<Api> getDatas(@Param("data") data) 

ich dieser Fehler bei der Ausführung der Abfrage:

org.springframework.dao.InvalidDataAccessResourceUsageException: konnte nicht ex Trakt-ResultSet; SQL [n/a]; verschachtelte Ausnahme ist org.hibernate.exception.SQLGrammarException: nicht ResultSet] mit Ursache

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException extrahieren könnte: Sie haben einen Fehler in der SQL-Syntax; Sie in der Bedienungsanleitung für die richtige Syntax verwenden in der Nähe von ‚))‘ in Zeile 1

+0

Wenn Sie log4j verwenden, dann aktivieren Sie unten Eigenschaft, und dies wird Ihnen helfen, die SQL zu drucken. So finden Sie, wo die Syntax Fehler.log4j.logger.org.hibernate.SQL = DEBUG' –

Antwort

0

Sie müssen entfernen Sie die Verwendung Klammer (api.datas) aus Ihrer Anfrage an Ihre MariaDB Server-Version entspricht:

@Query(value="select api from Api api where :data in api.datas") 

Sie können Klammern verwenden, wenn Sie beispielsweise mehrere Werte haben:

+0

kann ich wissen, warum diese down-vote bitte habe ich einen Fehler gemacht? –