2017-08-25 18 views
0

Da das Thema erwähnt, mein Problem ist, dass, wenn ich schreibe „von Person * wählen links animle auf preson.animle_id = animle.ID join“NHibernate - CreateSqlQuery mit gleichen Spaltennamen in zwei Tabellen verknüpft

Nun, wenn beide Tabellen „Alter“ Spalte zum Beispiel haben, habe ich ein Problem:

var query = "select * from person left join animle on preson.animle_id = animle.ID"; 

var List<Object[]> = createSqlQuery(query).addentity(person).addentity(animle).list<Object[]>(); 

die animle.age die Person Alterswert bekommt.

Gibt es eine Möglichkeit, dass jedes Objekt die richtigen Werte erhält, ohne die Spaltennamen zu ändern?

danke.

Antwort

0

Sie können versuchen, einen eindeutigen Alias ​​für jede age Spalte in der ursprünglichen SQL-Abfrage zuweisen:

SELECT 
    t1.age AS age_person, 
    t2.age AS age_animal, 
    ... -- other columns 
FROM person t1 
LEFT JOIN animle t2 
    ON t1.animle_id = t2.ID 

ich mit C# oder NHibernate nicht allzu vertraut bin, aber Sie sollten age_person und age_animal wie Sie zugreifen können würde irgendeine andere Spalte.

+0

Danke für die schnelle Antwort, Aliase für jede Spalte ist ein Problem, die NH HBM-Dateien sind bereits für eine riesige DB definiert und diese problematischen Spalten sind alle vorbei, ich brauche NHibernate in der Lage zu wissen, was wo geht ... wenn möglich natürlich – Rom

+0

Ich denke, ein Alias ​​ist die einzige Möglichkeit, hier fortzufahren, sonst kann man zwischen den beiden Spalten nicht unterscheiden. –

Verwandte Themen