gpt4 book ai didi

java - hibernate 查询

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:56 24 4
gpt4 key购买 nike

这是有关获取文档的查询。该文档有两种邀请类型。

 ->OPEN : View all user
->LIMITED : Show to limited user

hibernate映射如下:

 <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

最佳答案

问题通过CriteriaSpecification.LEFT_JOIN解决。当创建Alias时,它将执行内部联接,并且当联接为空时,它不会获取数据。所以在这里我完成了别名中的左连接。它将检查受邀请的用户。

criteria.createAlias("invitedUsers", "invitedUser",CriteriaSpecification.LEFT_JOIN); criteria.add(Restrictions.or(Restrictions.or(Restrictions.isNull("invitationType"), Restrictions.ne("invitationType",InvitationType.LIMITED)), Restrictions.and(Restrictions.eq("invitationType",InvitationType.LIMITED),Restrictions.eq("invitedUser.id", user.getId()))));

关于java - hibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com