我有一个像这样的复杂对象
A
|
|
| |->C(As child)---->it has 4 hastomany properties(each B has 10000 C child)
B(has many child)->
|->D(As child)---->it has 4 hastomany properties(each B has 1o000 D child)
|->B Has many prop also
|
|
|A has man
我使用JPA2.0和OpenJPA作为底层实现。我有一个实体,它映射到自己来表示实体之间的父子层次结构。一个实体可以有多个子项,但最多只能有一个父项。因此,没有父级的实体位于层次结构的顶部。我的目标是从data table.So中获取我查询的所有层次结构:
SELECT e FROM MyEntity e where e.parent is null
在MyEntity中,我已经完成了如下映射:
@ManyToOne
@JoinColumn(name="PARENT")
private MyEntity parent;
@OneToMany(mappedBy="par
假设我有实体A,B,C,每个A都有许多B和C实体。我想根据一些条件查询A实体的负载,我知道我将访问每个我返回的A的所有B和C实体。
像select a from A as a join fetch a.b join fetch a.c这样的东西乍一看似乎是有意义的,但如果B和C实体的数量很大,这就会创建一个巨大的产品。将此扩展到另一个关联实体会使查询完全不合理。
如果我把JPA留给它自己的设备,当它想要访问B和C实体时,我最终得到了n+1选择。
我认为我应该做的是查询A join fetch B,然后查询A join fetch C,但这并不起作用,因为它给出了两个List<A>结
在我的API应用程序中,我使用实体框架6和Server作为后端。
我有下面的DB设计和EF配置。
DB关系:(请参阅添加的图像)
Parent table -----one to many ---> child1
Parent table -----one to many ---> child2
域代码:
public class Parent
{
public Parent()
{
Child1 = new List<Child1>();
Child2 = new
我的存储库中有以下查询:
SELECT p FROM Project p JOIN p.users u WHERE u.login =:login
用户和项目之间存在着多对多的关系。一切正常,它返回用户的项目,但我希望每个项目都返回相应的用户集。所以用一个fetch join更新了它:
SELECT p FROM Project p JOIN FETCH p.users JOIN p.users u WHERE u.login =:login
但现在我得到了以下异常:
nested exception is java.lang.IllegalArgumentException: Count q
我正在使用Hibernate JPA1.0。
我有以下类型的模型,我认为manyToOne和oneToOne关系是“急切地”获取的,oneToMany是“惰性地”获取的。
我想获取实体A及其所有关联,在哪里a.id=?
A oneToMany B
B oneToOne C
C oneToMany D
- B oneToOne E
- E oneToMany D
- B oneToOne F
- F oneToMany D
是否可以在一个查询中加载该实体?或者在一个子集的查询中,记住"n+1选择问题“!
到目
假设我有Hibernate实体类A,B,C。B是A和C的字段。现在,我想根据C的其他字段的条件来检索A。我该怎么做呢?
@Entity
@Table(name = "A")
@Proxy(lazy = false)
public class A {
...
@ManyToOne
@JoinColumn(name = "b_ID")
private B b;
...
}
@Entity
@Table(name = "C")
@Proxy(lazy = false)
public class C