2009-08-31 63 views
1

我们有一个对象A,它包含另一个对象B.我们让Hibernate调用一个存储过程来查询数据并填充A的实例。我们使用@NamedNativeQuery注解将resultClass属性设置为A.class 。这很好,除了B的实例被懒惰地加载,就好像Hibernate无法根据返回的元数据来创建它们一样。我们重命名了存储过程中的“AS”子句,以反映B在B中的嵌套,并直接指向B的字段名称,但没有成功。如何使用Hibernate/JPA而不使用xml/annotation来映射内部对象?

问题是:如何在不使用* .hbm.xml或巨大的@SqlResultSetMapping注释的情况下使用存储过程时,如何获得对象字段的急切加载?

回答

2

你不能。从Hibernate documentation

存储过程目前只返回标量和实体。不支持<return-join><load-collection>

<return-join>是您将用于映射(非SP)命名SQL查询中急切加载的关联的内容。

+0

可以使用@SqlResultSetMapping注释完成,还是我们用延迟加载所有的子对象? – 2009-09-01 16:35:59

+0

您可以使用'@ SqlResultSetMapping'作为查询结果返回主实体和关联实体;您将无法将其用于自定义实体加载(除非您放弃SP) – ChssPly76 2009-09-01 16:49:49

+0

感谢您的帮助。看起来最好的方式是同时返回两个对象并在服务层中添加结构。 – 2009-09-01 17:16:06

相关问题