在创建别名或标准时,点的含义是什么

时间:2014-10-01 16:00:20

标签: hibernate criteria

例如,使用以下代码:

// 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是什么?

1 个答案:

答案 0 :(得分:3)

此处的点表示属性路径表达式。

您应该将dataPointGroups.id.groupId视为:

dataPointGroupsData类的属性(属性名称表示从DataDataPointGroup实体的一对多关系。

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;
}