Wie schreibt HIbernate Kriterien für eine Abfrage mit subselects
Habe ich zwei Entitäten Problem und Issue_Tracker. Ich bin mit hibernate 3.6 und eine an vielen Vereins.
Issue.java
public class Issue implements Serializable {
private Integer issue_id;
private String issue_description;
private Date issue_raised_date;
private Set<Issue_Tracker> issueTracker = new HashSet<Issue_Tracker>(0);
@OneToMany(fetch=FetchType.LAZY, mappedBy="issue_id")
public Set<Issue_Tracker> getIssueTracker() {
return issueTracker;
}
public void setIssueTracker(Set<Issue_Tracker> issueTracker) {
this.issueTracker = issueTracker;
Issue_Tracker.java
public class Issue_Tracker implements Serializable
{
private Integer issue_id;
private String tracker_status;
private Timestamp tracked_time;**
- Und dies ist die sql-Abfrage, wie Sie diese erreichen, indem Sie Kriterien
SELECT i.issue_id, i.issue_description,
it.tracker_status, it.tracked_time
FROM issues i
LEFT JOIN ( SELECT it.issue_id, it.tracker_status, it.tracked_time
FROM issue_tracker it
INNER JOIN (SELECT issue_id, MAX(tracked_time) tracked_time
FROM issue_tracker GROUP BY issue_id
) A ON it.issue_id = A.issue_id AND it.tracked_time = A.tracked_time
) it ON i.issue_id = it.issue_id
WHERE i.status = "Escalate To";
- Warum willst du die Kriterien? Sie haben bereits SQL-Abfrage, es einfach verwenden.
- danke ,das ist, was ich getan habe, aber ist es möglich, dies zu erreichen, indem Sie Kriterien, Wie ich bin @beginner-level für Kriterien, so so
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst schlage ich vor, Sie ändern die verwirrende name der Ausstellung.issueTracker zum Thema.issueTrackers da ist es ein Satz. Es macht die Dinge einfacher zu Lesen, wenn Sie abgefragt werden. Aber was auch immer.
In Criteria-API-ich glaube nicht, dass man direkt übersetzen dieses SQL. Sie sind besser zu schreiben, eine Beschreibung der Ergebnismenge, die Sie wollen. Wollen Sie der letzten Zeit verfolgt für alle Fragen mit "Eskalieren" status? Wenn ja, sollte dies in der Nähe, was Sie wollen.