我有一个Hibernate实体,它有几个非常胖但很少使用的嵌入式对象。我想使嵌入式对象延迟加载,但理想情况下我不希望将信息移动到单独的表中。
是否可以,如何对嵌入对象进行注释以便延迟加载?
答案 0 :(得分:3)
正如我从你的问题中理解的那样,你有一个大的对象(或表),你不想填充所有的属性。 您可以按照here使用HQL或条件查询的投影功能。
以下是一个示例, HQL 应为
select new com.foo.Bean(b.prop1,b.prop2,...) from Bean b
您还需要在Bean
类中添加相应的构造函数。
让我补充一点:
lazy
在必须从多个表中获取数据时具有意义。在这里,您保存要触发的其他查询以从其他表中获取数据。详细了解lazy
设置here。它可能不适用于您的情况,因为您只需从一个表中获取数据。
我觉得让多个对象在同一个表中表示数据并不是一个好主意,只是因为很少使用少数几列中的数据。
答案 1 :(得分:3)
直接你不能通过设置对象中的属性是,你可以
@Basic(fetch=FetchType.LAZY)