JPQL Constructor Expressions, wie Sie die Haupteinheit in 'Select new' abrufen können

Die ursprüngliche Abfrage, die ich habe, ist etwas komplex, aber was ich versuche zu tun, ist die Entity AlertCondition plus einige zusätzliche Felder zu erhalten.

+ " SELECT new org.rhq.core.domain.alert.composite.AlertConditionEventCategoryComposite " // + " ( " // + " ac, " // + " res.id " // + " ) " // + " FROM AlertCondition AS ac FETCH ALL PROPERTIES " // + " JOIN ac.alertDefinition ad " // + " JOIN ad.resource res " // + " WHERE " + AlertCondition.RECOVERY_CONDITIONAL_EXPRESSION // + " AND ( res.agent.id = :agentId OR :agentId IS NULL ) " // + " AND ad.enabled = TRUE " // + " AND ad.deleted = FALSE " // + " AND ac.category = 'EVENT' " // + "ORDER BY ac.id"), // 

Das Problem ist, dass Hibernate nur die ID von AlertCondition auswählt, so dass beim Zugriff auf dieses object N + 1 ausgewählt werden muss, während ich nur 1 tun möchte.

Die Auswahl ruft nur die Spalte ID ab, entsprechend dem Debugging:

 select alertcondi0_.ID as col_0_0_, alertdefin1_.ID as col_1_0_, resource2_.ID as col_2_0_ 

Was ich versuche zurück zu bekommen, sind alle Felder von * AlertCondition.

Unter Hibernate kann ich dazu keinen path finden. JOIN FETCH funktioniert hier auch nicht wirklich.

Die Alternative ist, jede Spalte der Tabelle auszuwählen, die ich vermeiden möchte.

Sie können festlegen, dass Hibernate eine Anzeige mit folgendem Inhalt abruft:

 JOIN FETCH ac.alertDefinition ad