JPA&x2B;Hibernate-一对多:仅获取特定实体
我有以下实体结构:JPA&x2B;Hibernate-一对多:仅获取特定实体,hibernate,jpa,Hibernate,Jpa,我有以下实体结构: class A { @OneToMany(mappedBy = "aInstance", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval=true) Set<B> bInstances; //Other fields and methods } class B {
class A {
@OneToMany(mappedBy = "aInstance",
fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
orphanRemoval=true)
Set<B> bInstances;
//Other fields and methods
}
class B {
@ManyToOne
@JoinColumn(name="a_id")
private A aInstance;
@Column(name="b_name")
private String name;
//Other fields and methods
}
A类{
@OneToMany(mappedBy=“aInstance”,
fetch=FetchType.LAZY,
cascade=CascadeType.ALL,
(删除=真)
设置垃圾箱;
//其他领域和方法
}
B类{
@许多酮
@JoinColumn(name=“a_id”)
私人立场;
@列(name=“b_name”)
私有字符串名称;
//其他领域和方法
}
现在,在DB表中,通常,与实体A对应的一行可以有数百个B
但我有兴趣根据名称为给定的a实例只获取一个这样的B实例。例如,我想获取只有名为“XYZ”的B的A
如何在一个查询中完成?
或者必须使用两个查询(或一个本机查询)?关于
a
,您还知道什么,它是唯一的,足以保证您可以有一个B
?的实例,只获取B。也许我不够清楚。我想要一个只有名字为“XYZ”的B的A。你不能这样做。如果A有10个b,则A.getBs()将始终返回10个b。但是你可以用A选择你想要的B,这将得到你想要的结果。只需将ajoin fetch b.a
添加到查询中即可。
select b from B b where b.name = 'XYZ' and b.aInstance = :a