2009-03-17 5 views
4

Zuordnung eines Wörterbuchs mit NH. Erklärung ist wie folgt:NHibernate fetch = "Join" Mapping-Attribut scheint nicht zu funktionieren

<hibernate-mapping ... 
    <map 
     name="CostsByRole" 
     table="JobAccountingSnapshotCosts" 
     lazy="false" 
     fetch="join" 
     access="nosetter.camelcase-underscore"> 
      <key column="SnapshotId" /> 
      <index column="RoleCode" type="String" /> 
      <element column="Amount" type="Decimal" /> 
    </map> 
</hibernate-mapping> 

ich eine einzelne SQL-Abfrage erwarten erzeugt werden, aber ich erhalte statt zwei: eine Auswahl für das eigentliche Objekt, gefolgt von einer Auswahl für die Inhalte des Wörterbuchs.

Irgendwelche Ideen?

+1

Ähm ... wer auch immer downvoted, vielleicht könnten Sie erklären warum? sieht für mich wie eine echte Frage aus. –

+0

Ist Join = "fetch" in Ihrem Mapping ein Tippfehler? –

+0

Ich habe nur wörtlich umformatiert, es war ursprünglich dort. – Kev

Antwort

6

HQL-Abfragen berücksichtigen nicht die Werte, die im Mapping abgerufen werden. Sie müssen sie ausschließlich in jeder HQL-Abfrage angeben. Es ist angeblich von Design. Der Abrufattributwert wird nur von Kriterienabfragen und von Laden/Abrufen verwendet.

1

Angenommen, es ist kein Tippfehler bei der Einreichung, das Problem ist wahrscheinlich der join="fetch" Teil in Ihrem Mapping. Es sollte fetch="join" sein und da der Standard für fetch "select" ist, würde das zu einem sequentiellen Auswahlproblem führen.

+0

In der Tat, es war ein Tippfehler (Danke für das Fangen!), Jetzt korrigiert. –

Verwandte Themen