3

我想使用 Hibernate 选择一个对象,但排除它的一些成员(在我的例子中是一个集合)。模型对象在我的应用程序中被广泛使用,所以我不想更改映射。有任何想法吗?谢谢

4

2 回答 2

1

您可以随时退回到 HQL,尤其是在这是一个只读用例的情况下。HQL 让您基本上可以创建一个 SQL 查询以仅返回您需要的字段,但它比原始 SQL 更安全,并且不会绕过 Hibernate,而是与 ORM 核心一起工作。

您将使用 SELECT 子句仅获取您需要的属性。

于 2012-11-22T08:02:14.980 回答
1

我不确定您是否可以在不更改映射的情况下做您想做的事情。就个人而言,我会将映射更改为惰性而不是急切,因为您可以轻松覆盖惰性加载。假设您大部分时间都在使用 HQL(因为您说您已经在使用它),然后您可以通过fetch <field-name>在 HQL 的from部分中添加来保持渴望加载,然后根本不将获取添加到您特别想要的 HQL延迟加载。当然,这种更改需要与您的团队进行沟通,因为任何新查询都应该考虑他们是否需要急切或延迟加载,但总的来说它不应该造成严重的破坏。

于 2012-11-22T08:31:39.940 回答