私は2つのエンティティを持っているとしましょう
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をフェッチするときに、modelPercentが0より大きいすべてのEntityBをフェッチするためのwhere句を追加したいということです。
この要件はこの特定の状況にのみ適用されるため、フィルターは使用しません。
例:データ:
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
いくつかの例への提案やポインタは非常に役立ちます。
ありがとう