Hibernate禁用集合获取

Hibernate禁用集合获取,hibernate,Hibernate,正在使用最新的Hibernate3 有一个模型,其中元素类有两个针对关系类的列表集合。一个是元素拥有(源)关系的地方,另一个是作为目标的地方 <class name="Element"....> .... <list name="sourceRelations" ....> ... <one-to-many class="...Relation" /> </list> <

正在使用最新的Hibernate3

有一个模型,其中元素类有两个针对关系类的列表集合。一个是元素拥有(源)关系的地方,另一个是作为目标的地方

 <class name="Element"....>
     ....

     <list name="sourceRelations" ....>
       ...
       <one-to-many class="...Relation" />
     </list>

     <list name="destinationRelations" ....>
       ...
       <one-to-many class="...Relation" />
     </list>
 </class>

 <class name="Relation"....>
     ....
     <many-to-one name="source" class="...Element" ...
        <column name="SOURCEID" sql-type="INTEGER" not-null="true" />
     </many-to-one>
     <many-to-one name="destination" class="...Element" ...
        <column name="DESTINATIONID" sql-type="INTEGER" not-null="true" />
     </many-to-one>
 </class>

....
...
...
....

将关系集合映射为lazy=“true”是否未提供所需的行为


如果不是这样,那么另一种选择是使用类继承。为没有映射集合的元素创建一个基类,以便在您现在手动修改返回数据的情况下使用,然后创建一个仅添加这些集合的子类,以便在需要大量数据时使用

将关系集合映射为lazy=“true”是否未提供所需的行为

如果不是这样,那么另一种选择是使用类继承。为没有映射集合的元素创建一个基类,以便在您现在手动修改返回数据的情况下使用,然后创建一个仅添加这些集合的子类,以便在需要大量数据时使用

提醒了我另一种可以避免使用子类的方法

创建一个只包含所需字段的构造函数,并在HQL中使用它,如下所示:

select new Element(e.id,...) from Element e...
我添加了第二个答案,因为这是一个不同于我第一个答案的方法。

提醒了我另一个可以避免使用子类的方法

创建一个只包含所需字段的构造函数,并在HQL中使用它,如下所示:

select new Element(e.id,...) from Element e...

我添加了第二个答案,因为这是一个不同于我第一个答案的方法。

整个想法不必子类化。元素/关系类应该是泛型的。为什么lazy=“true”还不够?整个想法不需要子类化。元素/关系类应该是泛型的。为什么lazy=“true”不够?很酷的建议。对查询使用条件,对well-get使用get。但若您可以在HQL中实现,那个么在其他API中也应该可以实现。我会到处玩,然后再打给你。你有没有试过使用tupilizers?基本上,您的建议就是我在代码中所做的。创建新元素并填充我想要的内容。我大量使用HQL/JPQL是因为我喜欢利用Hibernate在启动时检查命名查询作为开发过程中的快速失败策略。我个人没有尝试过很多其他方法。很酷的建议。对查询使用条件,对well-get使用get。但若您可以在HQL中实现,那个么在其他API中也应该可以实现。我会到处玩,然后再打给你。你有没有试过使用tupilizers?基本上,您的建议就是我在代码中所做的。创建新元素并填充我想要的内容。我大量使用HQL/JPQL是因为我喜欢利用Hibernate在启动时检查命名查询作为开发过程中的快速失败策略。我个人没有尝试过很多其他方法。