我正在使用遗留代码。我有entity A
和entity B
类,但因为entity B
被引用的地方很多,我尽量不做出entity B
变化。以下是这两个实体的类。 Entity B
具有外键列这是entity A
的主键和在该数据库表中,外键(AID)与表b(id)
的许多初级keies相关联。解决单向OneToMany关系的问题
我需要的是A(1之间ID范围 - 10000例如)的集合,其包括对应当我提出对表-A的查询,以帮助B的集合。当前的实现是首先获取A(具有大量行)的集合,然后循环遍历集合中的每个A,然后调用dao.findB(aId)为A设置B的集合。它会导致多次访问数据库。我尽量减少这次旅行。例如,如果A有50,000行,则dao.findB(aId)将被调用50,000次。
table_b
----------
id table_a_id
1 2
2 2
3 2
4 3
5 3
@Entity
@Table(name = "table_a")
public class A{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Long id;
}
@Entity
@Table(name = "table_b")
public class B{
private static final long serialVersionUID = 1L;
@Id
@Column(name="id", unique = true, nullable = false)
@GeneratedValue
private Long id;
@Column(name="table_a_id")
private Long aId;
}
@ user3123690不回答可以帮助你。 – 2014-09-03 04:41:55
感谢您的回答。我认为我没有解释我的问题。我刚刚更新了它。你可以看一下吗? – user3123690 2014-09-03 13:52:36
@ user3123690即使您在“实体A”内保留了“实体B”的引用,仍会获取相同的查询。替代方法可以是基于“A id”查询“实体B”。 – 2014-09-03 13:56:54