ドキュメントの取得に関するクエリです。ドキュメントには 2 つの招待タイプがあります。
->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" />
ユーザーは、公開されている文書のうち、種類が限定された招待状を受け取った文書のみに参加できます。
以下のクエリで期待される結果を得ることができます:
select * from document left outside join document_user_map on document.id= document_user_map.document_id and document_user_map.user_id =648
しかし、休止状態を介して、メソッドに以下の基準を追加しましたが、他ではなく限られた入札のみを取得しました。
criteria.createAlias("invitedUsers", "invitedUser"); criteria.add(Restrictions.or(Restrictions.ne("招待タイプ",InvitationType.LIMITED), Restrictions.or( ", user.getId())),Restrictions.isNull("invitedUsers"))));
私が間違っているところを誰か助けてもらえますか。
編集: ユーザー ID 1 はドキュメント 1、2 のみを取得する必要がありますが、3 は取得できません。しかし、この基準ではドキュメント ID 1 を取得できません。
テーブル構造:ドキュメント
id name invitation type userid
-----------------------------
1 doc1 open 1
2 doc2 LIMITED 1
3 doc3 LIMITED 2
このテーブルに限定された doc ユーザー エントリが追加されました: document_user_map
document_id user_id position
---------------------------
2 1 0
3 2 0