Laden...

NHibernate Join

Erstellt von Coffeebean vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.739 Views
Coffeebean Themenstarter:in
2.207 Beiträge seit 2011
vor 12 Jahren
NHibernate Join

verwendetes Datenbanksystem: MSSQL 2008 R2

Hallo zusammen,

ich würde gerne aus einer View(!) Daten auslesen und von dieser eine Join machen auf eine Tabelle und mir von dieser nur 2 Spalten dazujoinen.

MyView
Spalte1
Spalte2
DieIdMitDerIchJoinenWill
Spalte4

MyTable
DieIdMitDerIchJoinenWill (PK)
Spalte2
Spalte3
Spalte4

Bisher sieht mein mapping so aus:


  <class name="MyClass" table="MyView">

    <id name="Spalte1" column="Spalte1"/>
    <property name="Spalte2" column="Spalte2" />
    <property name="DieIdMitDerIchJoinenWill" column="DieIdMitDerIchJoinenWill" />
    ...

    <join table="MyTable">
      <key column="DieIdMitDerIchJoinenWill " foreign-key="DieIdMitDerIchJoinenWill "/>
      <property name="Spalte2" column="Spalte2" />
      <property name="Spalte3" column="Spalte3" />
    </join>
  </class>

Ich möchte also nur Spalte2 und 3 aus der Tabelle mit in meine Klasse aufnehmen. Aber das Join funktioniert nicht. Ich bekomme zwar ein Ergebnis zurück, aber es enthält statt 5xx Zeilen nur 20. Das macht mich stutzig. Wenn ich den Innerjoin händisch auf der DB ausführe geht es. Kommentiere ich den Join im obigen Mapping aus, geht es auch (Aber ohne meine 2 Werte aus der Tabelle...)

Viele liebe Grüsse

Coffeebean

1.564 Beiträge seit 2007
vor 12 Jahren

Hi Coffeebean

Ich kann dir zwar nicht genau sagen woran es bei dem NH Mapping liegen könnte, aber schau dir doch im SQL Server Profiler mal an was für ein Statement an den Server geschickt wird, vielleicht hilft dir das auf die Spur.

Viel Glück
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

Coffeebean Themenstarter:in
2.207 Beiträge seit 2011
vor 12 Jahren

Hallo Florian,

also sieht das Mapping für dich soweit richtig aus?

Das mit dem SQL Server Profiler schaue ich mir mal an, Danke.

Gruss

Coffeebean

1.564 Beiträge seit 2007
vor 12 Jahren

also sieht das Mapping für dich soweit richtig aus?

Keine Ahnung 😁 - Das meinte ich mit "kann ich nicht sagen".

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

C
252 Beiträge seit 2007
vor 12 Jahren

Ich glaube das Mapping passt nicht, da id mit key gejoint wird.
Aber setz mal

<property name="show_sql">true</property>

in deiner nhibernate config. Dann siehst du das Statement im Output Window welches abgesetzt wird, oder du nimmst eben den Profiler.

Coffeebean Themenstarter:in
2.207 Beiträge seit 2011
vor 12 Jahren

Ich glaube das Mapping passt nicht, da id mit key gejoint wird.

Kann man das ändern? Also ich dachte es geht, wie mein Mapping oben schon erkennen lässt.

Viele liebe Grüsse

Coffeebean

Coffeebean Themenstarter:in
2.207 Beiträge seit 2011
vor 12 Jahren

Hallo zusammen,

die Vermutung war richtig. NHibernate joint auf die oben angegebene ID. Meine Frage ist nun, wie ich das umbiegen kann, dass er eben nicht die ID-Spalte von "MyView" nimmt, sondern eine andere.

Viele liebe Grüsse

Coffeebean

EDIT:

Ich setze jetzt das "Property-Ref" auf das Property der Klasse, das die Spalte angibt, mit der er joinen soll...aber ohne Erfolg.


<join table="DataPoint">
      <key column="DieIdMitDerIchJoinenWill " foreign-key="DieIdMitDerIchJoinenWill"/>

C
252 Beiträge seit 2007
vor 12 Jahren

Ich kann morgen mal auf der Arbeit gucken. Ich glaube dass ich das auch mal so in einem unserer Projekte gebraucht habe.

Coffeebean Themenstarter:in
2.207 Beiträge seit 2011
vor 12 Jahren

Hallo chavez,

das wäre nett...ich bin am Verzweifeln und kann mir ienfach nicht vorstellen, dass NHibernate so etwas nicht kann.

Gruss

Coffeebean

Coffeebean Themenstarter:in
2.207 Beiträge seit 2011
vor 12 Jahren

Hallo zusammen,

ich habe mittlerweile ein wenig weitergeschaut. Das Problem ist nicht gelöst, ich habe sogar noch das heir gefunden:

https://nhibernate.jira.com/browse/NH-1452

was mein Problem ziemlich genau beschreibt:

"The <join> element does not use the property-ref attribute on it's <key>.
It will always join to the child table by the primary key."

Ich habe NHibernate 2.1.2.4000. Ist die dort auch betroffen? Wenn dem so ist, kann ich mich dumm und dämlich probieren.

Gruss

Coffeebean