假设我有一个这样的实体:
@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
参数值为“220”,其中有一个名为“Voltage”的参数。我必须过滤 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")));
但这对我来说似乎有些麻烦。有没有更方便的方法来处理这种关系?