Tôi muốn thêm một trái tham gia vào bảng TASK khi điều kiện sau đây xảy ra: LEFT JOIN FETCH p PROMPT trên (t.id = p.task.id và p.applicationName trong ('XXX'))Hibernate HQL: làm thế nào để sử dụng một trái phức tạp join lấy
đây là truy vấn HQL tôi:
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
tôi nhận được ngoại lệ sau đây, có lẽ do "trên" keyword:
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)
Bất kỳ ý tưởng nào?
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;
}
Làm thế nào tôi có thể sử dụng trái join lấy sử dụng điều kiện p.applicationName tôi trong ('XXX')?
Cấu trúc lớp bạn đã đăng (Tôi giả sử có chú thích thích hợp trên tất cả các thuộc tính đó) không liên kết 'Lời nhắc' với bất kỳ lớp nào khác. Bạn SQL tham gia 'Prompt' và' Task' qua 'task_id' nhưng không có thuộc tính nào phù hợp ở trên. 'Task' là thuộc tính trên' Prompt'? Hoặc ngược lại? Bạn có thể làm rõ? – ChssPly76