2011-08-30 2 views
0

Скажем, у меня есть такая модель:Hibernate Query API - критерии по свойству ключа на карте

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

отображается в НВМ, как это:

... 
<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 

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

ответ

0

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

Вы пробовали:

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

?

+0

Нет, вы предложили установить критерии по свойству ** значения ** карты, я хочу установить критерии свойства ** key ** карты –

+0

Я думал, что UserModel является ключом на вашей карте? Вы хотите найти все пользовательские отношения, которые имеют определенный UserModel, не так ли? –

+0

есть, точно. Но то, что вы написали, является критерием свойства «userModel» в «usersRelations» - в значениях. По крайней мере, это то, что говорит спящий режим, когда я копировал это. И у меня нет причин не верить ему :) –

Смежные вопросы