voglio aggiungere una sinistra unirsi sul tavolo TASK quando si verifica la seguente condizione: LEFT JOIN FETCH PROMPT p su (t.id = p.task.id e p.applicationName in ('XXX'))Hibernate HQL: come utilizzare un complesso sinistra join fetch
Ecco la mia interrogazione HQL:
select
distinct t
from
TASK t
LEFT JOIN FETCH
SERVER ser
on t.id=ser.task_id
LEFT JOIN FETCH
APPLICATION app
on ser.id=app.server_id
LEFT JOIN FETCH
PROMPT p on (t.id = p.task.id and p.applicationName in ('XXX'))
where
t.id=ser.task.id
and ser.id=app.server
and app.name in ('XXX')
order by t.id
ottengo la seguente eccezione, probabilmente a causa di "on" parola chiave:
java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:771)
Qualche idea?
class Task {
private String taskId;
private Set<ServerDetails> servers;
}
class ServerDetails {
private String id;
private Set<ApplicationDetails> applications;
}
class ApplicationDetails {
private String id;
}
Class Prompt {
private String applicationName;
}
Come posso usare LEFT JOIN prendere usando la mia condizione p.applicationName in ('XXX')?
La struttura di classe che hai pubblicato (presumo che ci siano annotazioni appropriate su tutte quelle proprietà) non collega il "Prompt" a nessun'altra classe. L'SQL unisce 'Prompt' e' Task' tramite 'task_id' ma non ci sono proprietà corrispondenti sopra. 'Task' una proprietà su' Prompt'? O vice versa? Puoi chiarire? – ChssPly76