Java 如何在HQL中应用或设置条件?
我有一个HQL查询,它在实体取消订阅时接受Java 如何在HQL中应用或设置条件?,java,hibernate,hql,Java,Hibernate,Hql,我有一个HQL查询,它在实体取消订阅时接受msisdn和subServiceId 以下是相同的代码: Query query = session.createSQLQuery(unsubscriptionInfodemo) .addEntity(Unsubscription.class) .setParameter("msisdn", msisdn) .setParameter("subService
msisdn
和subServiceId
以下是相同的代码:
Query query = session.createSQLQuery(unsubscriptionInfodemo)
.addEntity(Unsubscription.class)
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId);
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId)
.setParameter("subServiceId2", "XYZ"); // Make this subServiceId2
现在,我需要在这个取消订阅
实体中检查子服务ID
是否是我通过的子服务ID
,或者它应该是我硬编码的子服务ID
我可以申请吗
public void checkUser(String msisdn,String subServiceID){
Query query = session.createSQLQuery(unsubscriptionInfodemo)
.addEntity(Unsubscription.class)
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId)
.setParameter("subServiceId", "XYZ");
}
HQL查询:
unsubscriptionInfodemo=select * from unsubscription s where s.msisdn=:msisdn and s.subservice_id=:subServiceId
有人能指导我如何进行吗
如果不更改hql字符串,就无法使用hql实现您想要实现的动态功能 <>我会考虑使用它提供动态的功能。< /P> 最简单的方法是基于该值创建hql字符串(如果subServiceId存在或不存在),或者使用criteria api,因此如果存在subServiceId,您只需添加一个额外的equals过滤器 关于如何基于变量存在向hql添加动态条件的问题应该改变
还要检查在不更改hql字符串的情况下,您要使用hql实现的动态功能无法完成 <>我会考虑使用它提供动态的功能。< /P> 最简单的方法是基于该值创建hql字符串(如果subServiceId存在或不存在),或者使用criteria api,因此如果存在subServiceId,您只需添加一个额外的equals过滤器 关于如何基于变量存在向hql添加动态条件的问题应该改变 也检查 如何在HQL中应用或设置条件 在查询中使用
或:
select * from unsubscription s where s.msisdn=:msisdn and s.subservice_id=:subServiceId OR
s.subservice_id=:subServiceId2
和名称参数不应相同:
Query query = session.createSQLQuery(unsubscriptionInfodemo)
.addEntity(Unsubscription.class)
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId);
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId)
.setParameter("subServiceId2", "XYZ"); // Make this subServiceId2
如何在HQL中应用或设置条件
在查询中使用或:
select * from unsubscription s where s.msisdn=:msisdn and s.subservice_id=:subServiceId OR
s.subservice_id=:subServiceId2
和名称参数不应相同:
Query query = session.createSQLQuery(unsubscriptionInfodemo)
.addEntity(Unsubscription.class)
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId);
.setParameter("msisdn", msisdn)
.setParameter("subServiceId", subServiceId)
.setParameter("subServiceId2", "XYZ"); // Make this subServiceId2
unsubscriptionInfodemo
这有什么价值?是的,没有显示您的查询,询问是没有意义的。好的,编辑了代码unsubscriptionInfodemo
这有什么价值?是的,如果不显示您的查询,那么询问是没有意义的。好的,编辑了codcan我喜欢这样选择*from unsubscription s其中s.msisdn=:msisdn和s.subservice_id IN(subServiceId,subServiceId2)。setParameter(“msisdn”,msisdn)。setParameter(“subServiceId”,subServiceId)。setParameter(“subServiceId2”,“XYZ”);//使此子服务ID2可以按此方式从取消订阅s中选择*,其中s.msisdn=:msisdn和s.subservice_id IN(subServiceId,subServiceId2).setParameter(“msisdn”,msisdn).setParameter(“subServiceId”,subServiceId).setParameter(“subServiceId2”,“XYZ”);//将此设置为subServiceId2