Это запрос об извлечении документов. Документ имеет два типа приглашения.Запрос на спящий режим
->OPEN : View all user
->LIMITED : Show to limited user
отображение спящего режима, как показано ниже:
<list name="invitedUsers" cascade="refresh" table="document_user_map">
<key column="document_id"/>
<index column="position" type="integer"/>
<many-to-many class="com.v4common.shared.beans.usermanagement.User" column="user_id"/>
</list>
<property name="invitationType" column="invitation_type"
type="com.resources.userenum.UserEnumInvitationType" />
Пользователь может участвовать только те документы, которые открыты и получили приглашение для ограниченного типа.
я могу получить ожидаемый результат через ниже запроса:
выберите * из документа левое внешнее соединение document_user_map на document.id = document_user_map.document_id и document_user_map.user_id = 648
Но через спящий режим, я добавил ниже критерии по методу, но только ограничил торговлю не другими.
criteria.createAlias ("inviteUsers", "inviteUser"); Критерии.add (Restrictions.or (Restrictions.ne ("приглашениеType", InvitationType.LIMITED), Restrictions.or ( Restrictions.and (Restrictions.eq ("приглашениеType", InvitationType.LIMITED), Restrictions.eq ("inviteUser. id ", user.getId())), Restrictions.isNull (" inviteUsers "))));
Может кто-нибудь помочь мне, где я ошибаюсь.
Edit: идентификатор пользователя 1 должен получить только документ 1, 2, но не 3. но через эти критерии я не получаю DocId структуры 1.
Таблицы: документ
id name invitation type userid
-----------------------------
1 doc1 open 1
2 doc2 LIMITED 1
3 doc3 LIMITED 2
Limited запись пользователя документ добавлен в этой таблице: document_user_map
document_id user_id position
---------------------------
2 1 0
3 2 0
Непонятно, что вы ожидаете отсюда. – taxeeta
@taxeeta редактировал вопросы .. дайте мне знать любой запрос. – iMBMT