例如,使用以下代码:
// Setup Criteria and aliases
DetachedCriteria criteria = forClass(Data.class)
.createAlias("dataPointGroups", "dataPointGroups");
// Setup Restrictions
criteria.add(eq("dataPointGroups.id.groupId", groupId)).add(eq("archived", false));
可以解释一下dataPointGroups.id.groupId是什么?
答案 0 :(得分:3)
此处的点表示属性路径表达式。
您应该将dataPointGroups.id.groupId
视为:
dataPointGroups
是Data
类的属性(属性名称表示从Data
到DataPointGroup
实体的一对多关系。
DataPointGroup
实体类还具有id
属性。可能id
属性是嵌入式主键(从属性id
的名称判断,与@EmbeddedId
映射)。
在任何情况下,该id
属性的类类型还具有名为groupId
的属性。
希望我的解释清楚。
无论如何,这就是实体和映射的外观:
@Entity
class Data {
@Id
long id;
@OneToMany
Set<DataPointGroup> dataPointGroups;
}
@Entity
class DataPointGroup {
@EmbeddedId
DataPointGroupPkClass id;
}
@Embeddable
class DataPointGroupPkClass {
long groupId;
long someOtherProperty;
}