Hibernate Query API - 地图中键的属性标准

时间:2011-08-30 09:08:45

标签: java hibernate3

假设我有这样的模特:

public class ProjectModel {
        ...
        private Map<UserModel, ProjectUserRelations> usersRelations = new HashMap<UserModel, ProjectUserRelations>();
}

在hbm中映射如下:

...
<map name="usersRelations" cascade="save-update" table="PROJECT_MEMBERS">
    <key column="project_id" />
    <map-key-many-to-many column="user_id" class="UserModel"/>
    <many-to-many column="properties_id" class="ProjectUserRelations"/>
</map>
...

如何使用Hibernate Criteria列出已授予用户的项目? 我试过这个:

标准hbCriteria = session.createCriteria(ProjectModel.class);

if(criteria.getUserId() != null) {
    hbCriteria.createCriteria("usersRelations").add(Restrictions.eq("userId", criteria.getUserId()));
}

当然用户已映射:

<class name="UserModel"
    table="USER">
    <id name="objectId" column="objectId" type="java.lang.Long">
</class>

使用当前实现时get:

org.hibernate.QueryException: could not resolve property: usersRelations.objectId of: ProjectModel

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么(使用hibernate条件API可以实现以多对多方式建立地图的关键属性的标准)。

你试过了吗?

hbCriteria.createCriteria("usersRelations").add(Restrictions.eq("userModel.userId", criteria.getUserId()));