2012-03-27 2 views
0

Ich habe die folgende Einstellung in Db hier Klassen in Probe Hib dargestelltWie Hibernate-Stopp von rekursiv die Entitäten Laden

Klasse A {
private B b; }

Klasse B {
private C c; }

Klasse C {
private D d; }

Beispiel HQL: von A eine linke Verbindung a.b;

Dies rekursiv lädt alle Entitäten von A bis D. Wie selektiv laden Einheiten sagen in diesem Fall würde ich wollen, dass es bis B laden?

Antwort

0

Wenn Sie Mapping-Dateien verwenden, könnten Sie feststellen, dass Hibernate die Entitäten lazy lädt. Auf diese Weise wird die Entität nur geladen, wenn Sie auf die Eigenschaft zugreifen. Im Folgenden finden Sie ein Beispiel für die Einrichtung des Lazy-Loads der Entitäten. Die Klasse A und B wird immer geladen, aber der Rest wird erst geladen, nachdem Sie versuchen, auf ihre Eigenschaften zuzugreifen.

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="TestNamespace.A, TestNamespace" table="A" lazy="false" /> 
    <many-to-one name="B" column="B" /> 
</hibernate-mapping> 

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="TestNamespace.B, TestNamespace" table="B" lazy="false" /> 
    <many-to-one name="C" column="C" /> 
</hibernate-mapping> 

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="TestNamespace.C, TestNamespace" table="C" lazy="true" /> 
    <many-to-one name="D" column="D" /> 
</hibernate-mapping> 


<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="TestNamespace.D, TestNamespace" table="D" lazy="true" /> 
    <property name="SomeProperty" column="SomeColumn" /> 
</hibernate-mapping> 

Best of luck

+0

Gibt es eine Möglichkeit zu faul Last eineindeutig Einheiten? – Sudhakar

+1

Soweit ich weiß, dass dies nicht von Hibernate unterstützt wird, sah ich einen Beitrag über etwas Ähnliches, das einen Workaround dafür hatte. Siehe diesen Beitrag http://stackoverflow.com/questions/965059/how-to-lazy-load-a-one-to-one-composition-via-hql – Falle1234