这是关于获取文档的查询。该文件有两种邀请类型。
->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 outer join document_user_map on document.id= document_user_map.document_id and document_user_map.user_id =648
但是通过hibernate,我在方法中添加了以下标准,但只获得了有限的招标而不是其他标准。
criteria.createAlias("invitedUsers", "invitedUser"); criteria.add(Restrictions.or(Restrictions.ne("invitationType",InvitationType.LIMITED), Restrictions.or( Restrictions.and(Restrictions.eq("invitationType",InvitationType.LIMITED),Restrictions.eq("invitedUser.id ", user.getId())),Restrictions.isNull("invitedUsers"))));
任何人都可以在我错的地方帮助我。
编辑: 用户 id 1 应该只得到文档 1、2 而不是 3。但是通过这个标准,我没有得到 docid 1。
表结构:文档
id name invitation type userid
-----------------------------
1 doc1 open 1
2 doc2 LIMITED 1
3 doc3 LIMITED 2
此表中添加的受限文档用户条目:document_user_map
document_id user_id position
---------------------------
2 1 0
3 2 0