Hibernate查询关联对象是否为空的语句

本文探讨了在Hibernate中如何查询尚未与User关联的Person对象。通过调整查询语句使用左连接(left join),成功实现了目标查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一年前发的帖子:http://topic.youkuaiyun.com/u/20100510/15/284817f8-820d-434d-8e15-1c3099bbcde3.html,都忘记这问题了,今天突然看到消息有人回复了,看下了,有人给解决了,可开心了,纪念下。

Person类和User类一一对应,映射关系如下

  1. private  User user;  
  2. @OneToOne (cascade={CascadeType.ALL}, mappedBy= "person" )  
  3. public  User getUser() {  
  4.     return  user;  
  5. }  
  6. private  Person person;  
  7. @OneToOne ()  
  8. @JoinColumn (name= "personid" )  
  9. public  Person getPerson() {  
  10.     return  person;  
  11. }  

我想从person中查询还未配上User的person列表

  1. String hql =  "from Person as p where p.user is null" ;  


可是没实现我要的结果,myeclipse后台输出的hibernate语句是的后半部分是 

  1. from Person person0_ where person0_.id is not  null   

怎么会是 person0_.id is not null,怎么就给变成 person0_.id呢,我要怎么写才能实现我要的功能

感谢 MaracMo 的回答:

我今天也碰到了这个问题,研究了下,可以用以下语句查出来:
from Person as p left join p.user as u where u is null.
hibernate默认情况下对关联属性的查询是采用inner join策略,因此
from Person as p where p.user is null 语句是查不到user属性为空的person对象的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值