0

我正在使用 JPA、Hibernate、MySQL。

我有两个表 Upload,UploadRating。每个上传可以在 UploadRating 表中具有多个评级,即 OneToMany。UploadRating 有一个属性 user ,它定义了对上传进行评分的用户。

现在我想知道用户不存在 UploadRating 的所有上传。所以查询类似于:

from Upload up,  UploadRating  ur where ur.upload=up and ur.user != :usrId 

我知道上述查询存在缺陷。在这种情况下,我们需要使用外连接。有人可以帮我查询。

4

1 回答 1

0

在 SQL 中,您可以使用:

select 
  * 
from 
  Upload up 
where 
  not exists (select * from UploadRating ur where ur.upload_id=up.id and ur.user = :usrId)

假设这upload_id是包含每个上传的唯一 ID 的上传评级列。

使用连接的等效 SQL 将是这样的:

select 
  * 
from 
  Upload up 
  left outer join UploadRating ur on ur.upload_id=up.id
where 
  (ur.user <> :usrId) or (ur.user is null)
于 2012-06-08T18:03:42.927 回答