【发布时间】:2013-10-10 10:09:27
【问题描述】:
我正在使用 Hibernate 3.6.9 作为 ORM 和 xml 映射的 Java 应用程序。实际上,有两个实体,Detectable和Revision,Detectable与Revision是一对多的关系,映射整个已完成的修订:
<set name="_Revisions" table="trevision" inverse="true" lazy="true">
<key>
<column name="id_detectable" />
</key>
<one-to-many class="com.company.model.tasks.Revision" />
</set>
另请参阅我发布的this similar question。我现在想要的是在类的单独字段中获得最后的修订:
<many-to-one name="_LastDoneRevision" column="id_detectable"
class="com.company.model.tasks.Revision" lazy="false" />
我想要实现的是总是急切地获取最新版本(我在大多数情况下使用)。除此之外,如果我愿意,我可以获得整套修订,但默认情况下它是惰性初始化的。要实现这一点,可能需要使用自定义查询从整个集合中完成最后一次修订。
我认为这不能通过公式来实现,因为它们只是检索一个值,而不是整个实体。我希望能够以某种方式选择many-to-one 关系应该具有的内容。
解决方案可以是to use a view,而不是Detectable 表本身。这样我就可以有一个 VDetectable 实体,该实体将映射到视图,并且视图可以获得所有原始属性以及对我感兴趣的 Revision 的引用。
无论如何,是否可以仅使用原始实体加载它?
【问题讨论】: