0
我在DB中的下列設置來表示這裏在樣品HIB類如何從遞歸加載實體
類A {
私人B B休眠停止; }B類{
private C c; }C類{
private D d; }
示例HQL:from A a left join a.b;
這遞歸地加載所有實體從A到D.如何選擇性地加載實體說在這種情況下,我會希望它加載到B?
我在DB中的下列設置來表示這裏在樣品HIB類如何從遞歸加載實體
類A {
私人B B休眠停止; }B類{
private C c; }C類{
private D d; }
示例HQL:from A a left join a.b;
這遞歸地加載所有實體從A到D.如何選擇性地加載實體說在這種情況下,我會希望它加載到B?
如果你正在使用映射文件,你可以告訴hibernate延遲加載實體。 這種方式實體將不會被加載,除非你訪問該屬性。 下面是如何設置實體的延遲加載的示例。 A和B類總是被加載,但其餘的只有在你嘗試並訪問它們的屬性後才被加載。
<?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>
祝您好運
的有沒有辦法來延遲加載一對一的實體? – Sudhakar 2012-03-28 08:12:03
據我所知,這不被Hibernate支持,我看到一篇關於類似的文章,有一個解決方法。看到這篇文章http://stackoverflow.com/questions/965059/how-to-lazy-load-a-one-to-one-composition-via-hql – Falle1234 2012-03-29 09:18:09