Bonjour,
J'ai un problème avec une requête HQL. J'essaie d'obtenir une liste triée d'objets "Connection" avec la requête suivante :
Code:
FROM Connection AS connection ORDER BY connection.message.status ASC
Quand je regarde la requête générée, il semblerait qu'Hibernate ajoute une clause JOIN :
Code:
select [...] from CONNECTION connection0_, MESSAGE message1_ where connection0_.ID_MESSAGE=message1_.SID_MESSAGE order by message1_.ID_STATUS ASC
Ce qui est normal, mais malheureusement c'est un INNER JOIN qui est ajouté par défaut. Du coup ma liste de résultats contient uniquement les "Connections" qui possèdent une référence vers la table MESSAGE. Les connections sans message ne sont pas renvoyées.
Comment puis-je demander à Hibernate de remplacer cette jointure par un LEFT OUTER JOIN ?Voilà le mapping entre Connection et Message.
Code:
public class Connection {
...
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="ID_MESSAGE", nullable=true)
@ForeignKey(name = "FK_MESSAGE_CONNECTION")
private Message message;
...
}
J'ai essayé d'ajouter "optional=true" à l'annotation ManyToOne, mais ça ne change rien.
J'ai essayé de rajouter les clause left outer join manuellement, mais la liste de résultats donne des données brutes et pas des objets persistants.