让我们说我有两个实体
public class EntityA
{
@id
@GeneratedValue
@Column(name="id")
private Long id;
@OneToMany(mappedBy="EntityA")
@JoinColumn(name = "entityA_id")
private List<EntityB> entityBList;
}
public class EntityB
{
@Column(name = "MODEL_PERCENT")
private BigDecimal modelPercent;
@ManyToOne
@joincolumn(name="entityA_id")
private EntityA entityA;
}
我现在想要的是,当我获取EntityA时,我想添加一个where子句来获取其modelPercent大于0的所有EntityBs。
我不想使用过滤器,因为此要求仅针对此特定情况。
例如数据:
EntitytA table
id
1
EntityB table
id EntitytA_Id modelPercent
1 1 10
2 1 0
我需要一种方法,可能是一个hql来获取EntityA,这样当我说EntityA.getEntityBList()时 它应该只返回1条记录(其中一个模型的百分比为10(大于零))。
我尝试了以下查询,但它似乎无法正常工作。即它返回来自entityB的记录
select a from EntityA a,IN( a.EntityBList) b where a.id =:id and b.modelPercent>0
对某些例子的任何建议或指示都会有很大帮助。
由于
答案 0 :(得分:0)
1)你在测绘中有错误 EntityA - 同时具有财产和字段访问权限 EntityB - 没有ID,同时具有属性和字段访问权限 2)HQL查询
SELECT eA FROM EntityA LEFT JOIN eA.entityBList eB WHERE eA.id =:id AND eB.modelPercent > 0