当前设置:
Entity A:
fieldA;
@OneToMany(mappedBy="fieldA")
List<B> Bs;
Entity B:
fieldA;
fieldB;
fieldX;
实体A映射到表A,实体B映射到表B.fieldA是表A的主键,fieldA&amp; fieldB组成表B的复合主键
问题是,当我们使用此设置加载A时,我们会在B列表中找回数千个对象,而我们只关心字段B在实体B中的值。为了节省内存,我们希望有List FieldBs而不是实体A中的B列表,完全摆脱了实体B类。
所以看起来更喜欢这个
Entity A:
fieldA;
List<fieldB> Bs;
这可能吗?嗯,我当然希望如此,但我不确定如何。 @SecondaryTable是否带有注释:
@SecondaryTables({
@SecondaryTable(name="Table B", pkJoinColumns={
@PrimaryKeyJoinColumn(name="fieldA")}
)
带
@JoinColumn(name="fieldB", table="Table B")
List<fieldB> Bs;
诀窍?问题是我仍然希望拥有@OneToMany关系映射,所以我想我也需要在某个地方包含它。
为了清楚起见,我想从我的Java代码中删除B类,并将fieldB移到A类,保持@OneToMany关系。但仍然可以阅读List并将其保存回表B.
答案 0 :(得分:0)
这就是Hibernate的工作原理。默认情况下,它将加载对象的所有属性(除了延迟加载的集合)。 您的应用程序内存是否如此受限,以至于您希望在此级别进行优化?
只有在编写使用costum HQL填充的包装类时,才能提出要求。
这些是你可以做的事情: