Hibernate Query API - критерии для свойства ключа на карте - PullRequest
0 голосов
/ 30 августа 2011

Допустим, у меня есть такая модель:

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>

При использовании текущегореализация получить:

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

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 30 августа 2011

Я не уверен, что то, что вы пытаетесь сделать (настройка критериев для ключевого свойства карты, которая моделируется как многие-ко-многим), достижимо с помощью API критериев гибернации.1003 *

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

?

...