0

私がそのようなモデルを持っているとしましょう:

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

どんな助けでも感謝します。

4

1 に答える 1

0

あなたが何をしようとしているのか (多対多としてモデル化されたマップのキー プロパティに基準を設定すること) が、休止状態の基準 API を使用して達成可能かどうかはわかりません。

やってみました:

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

?

于 2011-08-30T09:20:01.807 に答える