Java 如何在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

我有一个HQL查询,它在实体取消订阅时接受
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