Скажем, у меня есть такая модель: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
Любая помощь приветствуется.
Нет, вы предложили установить критерии по свойству ** значения ** карты, я хочу установить критерии свойства ** key ** карты –
Я думал, что UserModel является ключом на вашей карте? Вы хотите найти все пользовательские отношения, которые имеют определенный UserModel, не так ли? –
есть, точно. Но то, что вы написали, является критерием свойства «userModel» в «usersRelations» - в значениях. По крайней мере, это то, что говорит спящий режим, когда я копировал это. И у меня нет причин не верить ему :) –