我有两个字段emailid1Status,emailid2Status。如果emailid1status为true,那么我必须将给定的电子邮件与emailId1列进行比较,并将其与emailid2Status进行比较。如何在Hibernate中实现这一点。
下面我试过但没有运气。
from User where user.emailId = email OR user.emailid1 = select case when user.emailid1Status is 0 then null else email OR user.emailid2 = select case when user.emailid2Status is 0 then null else
user.emailid2 = email
end
更新 使用下面的SQL Query获得正确的结果。任何机构都可以告诉我如何将其转换为HQL,或者可以使用Criteria API
select * FROM user_profile a WHERE a.emailId = 'test@gmail.com' or a.emailId1 = (CASE WHEN a.emailId1_status THEN 'test@gmail.com' ELSE '' END) or a.emailId2 = (CASE WHEN a.emailId2_status THEN 'test@gmail.com' ELSE '' END)
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您想使用HQL,那么查询将是:
session.createQuery("FROM User user "
+ "WHERE user.emailId = 'test@gmail.com' "
+ "or user.emailId1 = (CASE user.emailId1Status WHEN TRUE THEN 'test@gmail.com' ELSE '' END) "
+ "or user.emailId2 = (CASE user.emailId2Status WHEN TRUE THEN 'test@gmail.com' ELSE '' END)");