Multiple jointures sur Oracle 10g avec NHibernate

December 21st, 2010 Tutoriaux C# 0 Comments

Quelques posts parlent d’un bug survenant avec oracle 10g et NHibernate lors d’une jointure multiple.

Survient alors une erreur “ORA-00904″. Une fois le code SQL généré lu, on se rend compte que les jointures suivant une virgule sont alors incapable d’utiliser des valeurs déclarées dans le Select.

left outer join "City" city2_ on address1_.City_id=city2_.Id, "Country" country6_
left outer join Provider_Specialities specialiti3_ on provider0_.Id=specialiti3_.Provider_id

donc l’utilisation de provider0_.Id dans le second join est invalidé par le “,” du premier join.

Le code incriminé se situe dans le fichier Oracle10gDialect.cs dans NHibernate.Dialect. En voici son code :

public class Oracle10gDialect : Oracle9iDialect
{
    public override JoinFragment CreateOuterJoinFragment()
    {
        return new ANSIJoinFragment();
    }
}

Le workaround le plus simple à mettre en place est de changer le dialect de votre SessionFactory de Oracle10 vers Oracle9.

Développement Windows Phone 7
FDLV va lancer son application Windows Phone 7 !

No Comments


Contact

Benjamin Laffont Portrait
  • mail Contact Mail
  • cv CV Dev/Technical Leader C# mi-2010
  • MCTS
  • Locations of visitors to this page

Categories

General advises (2)
Humour (5)
Musics and Movies (4)
My divertissement (4)
News (44)
Ogame bot (7)
Photo (3)
Politic (4)
Publications (5)
Tutoriaux C# (14)
Tutoriaux techniques (7)
Windows Phone 7 (6)

WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.

Mon fil Flickr