我想使用Hibernate选择一个对象,但是要排除它的一些成员(在我的例子中是一个集合)。模型对象在我的应用程序中广泛使用,因此我不想更改映射。 有任何想法吗?感谢
答案 0 :(得分:1)
如果这是一个只读用例,您可以随时回退到HQL。 HQL允许您基本上创建SQL查询以仅返回您需要的字段,但它比原始SQL更安全,并且不绕过Hibernate但与ORM核心一起使用。
您将使用SELECT子句仅获取所需的属性。
答案 1 :(得分:1)
我不确定你可以在不改变映射的情况下做你想做的事。就个人而言,我会将映射更改为懒惰而不是急切,因为您可以轻松覆盖延迟加载。假设您大部分时间都在使用HQL(因为您已经说过已经使用过HQL),那么您可以通过在HQL的fetch <field-name>
部分添加from
来保持急切加载,然后只需不要将提取添加到特别需要延迟加载的HQL。当然,这种变化需要将其传达给您的团队,因为任何新的查询都应该考虑他们是否需要急切或懒惰的负载,但总的来说它不应该是非常具有破坏性的。