次のようなエンティティがあるとします。
@Entity
@Table(name = "ITEMS")
public class Item {
@OneToMany(mappedBy = "item")
private Set<ItemParameterValue> parameterValues;
}
との関係がありItemParameterValues
ます:
@Entity
@Table(name = "ITEM_PARAMETER_VALUES", uniqueConstraints = @UniqueConstraint(columnNames = {"item_id", "parameter_id"}))
public class ItemParameterValue {
@ManyToOne
@JoinColumn(name = "parameter_id")
private ItemParameter parameter;
}
と関係がありItemParameter
ます:
@Entity
@Table(name = "ITEM_PARAMETERS", uniqueConstraints = @UniqueConstraint(columnNames = "sid"))
public class ItemParameter {
}
たとえばItem
、「Voltage」という名前のパラメーターを持つ「220」のパラメーター値を持つものがあります。220 をフィルター処理する必要がありますが、値 220 は多くのパラメーターに属している可能性があります。パラメーター「電圧」に属するものが必要です。
私は次のようなことができることを知っています (適切なエイリアスを設定すると仮定します):
Criteria c = session.createCriteria(Item.class);
// ...
c.add(Restrictions.conjunction()
.add(Restrictions.eq("item.parameterValue", "220"))
.add(Restrictions.eq("item.parameterValue.parameter.sid", "Voltage")));
しかし、それは私にはやや面倒に思えます。この種の関係を処理するためのより便利な方法はありますか?