Ich habe die folgenden Beans Task, ServerDetails und ApplicationDetails. Ich möchte alle Aufgaben, ihre Serverdetails und Anwendungsdetails basierend auf einem bestimmten Anwendungsnamen abrufen.
Von dem Ergebnis erwarte ich, dass ich die Daten auf eine Art und Weise wie folgt abrufen kann: task.getServers().getApplicationDetails()
In Wirklichkeit erhalte ich eine scheinbar flache Datendarstellung als Object[].
Gibt es eine Möglichkeit, das zu tun, was ich vorschlage?
Hier ist mein Code...
class Task {
private String taskId;
private Set<ServerDetails> servers;
}
class ServerDetails {
private String id;
private Set<ApplicationDetails> applications;
}
class ApplicationDetails {
private String id;
}
HQL:
StringBuilder hql = new StringBuilder(256);
hql.append("FROM Task h, ServerDetails ser, ApplicationDetails app ");
hql.append("WHERE h.executionDate > ");
hql.append("to_date('");
hql.append(DBDateFormatter.getInstance().formatDate(cal));
hql.append("', '");
hql.append(DBDateFormatter.getInstance().getOracleDateFormat());
hql.append("') and h.id = ser.task.id and ser.id = app.server and app.name = 'XXX'");
hql.append(" order by h.executionDate desc");
String hql = hql.toString();
Query query = session.createQuery(hql);
results = (List<Object[]>) query.list();