可以说我有两个实体
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的EntityB。
我不想使用过滤器,因为此要求仅适用于这种特殊情况。
例如数据:
EntitytA table id 1 EntityB table id EntitytA_Id modelPercent 1 1 10 2 1 0
我需要一种方法,可能是获取EntityA的hql,以便当我说EntityA.getEntityBList()时,它应该仅返回1条记录(一个模型百分比为10(大于零的记录))。
我试过下面的查询,但它似乎不起作用。即,它从entityB返回两个记录
select a from EntityA a,IN( a.EntityBList) b where a.id =:id and b.modelPercent>0
任何建议或指向某些示例的指示都会有很大帮助。
谢谢
1)您在映射 EntityA时遇到 错误- 实体B同时 具有属性和字段访问权限- 实体 ID没有ID,并且同时具有属性和字段访问权限 2)HQL查询是
SELECT eA FROM EntityA LEFT JOIN eA.entityBList eB WHERE eA.id =:id AND eB.modelPercent > 0