2017-05-25 1 views
1

Je souhaite sélectionner des lignes ayant un fieldName distinct. Et cette requête fonctionne très bien dans PostgreSQL.HQL - Erreur de jointure interne

select f from FieldType as f inner join 
    (select fa.fieldName, min(fa.id) as id from FieldType fa group by fa.fieldName) 
    as f1 on f.fieldName =:f1.fieldName and f.id =:f1.id 

Mais je ne peux pas faire cette requête pour travailler dans Java en utilisant HQL. Je garde toujours à obtenir cette erreur

org.hibernate.hql.internal.ast.QuerySyntaxException: jeton inattendu: (

Suppression se déplace juste erreur les parenthèses au caractère suivant Comment puis-je corriger. ? ce que je suis ouvert à toute suggestion

+0

HQL et SQL sont des langages différents. Vous ne pouvez pas passer une requête SQL à une méthode qui attend une requête HQL, tout comme vous ne pouvez pas passer le code C++ à un compilateur Java. –

+0

cela ressemble plus à une requête native, utilisez l'option de requête native de hibernate –

+0

Je ne suis pas sûr de ce qu'il n'aime pas dans la sous-requête, mais je suis sûr qu'il ne sera pas content de = :, comme: désigne un paramètre que vous devez définir de l'extérieur, et joindre un paramètre n'a aucun sens. – Deltharis

Répondre

2

Il semble que vous auriez à effectuer une sorte de requête à la place afin corrélative de tirer profit HQL.

select f from FieldType as f 
where (f.fieldName, f.id) in 
    (select fa.fieldName, min(fa.id) as id 
    from FieldType fa 
    group by fa.fieldName)