Search code examples
javahibernatehql

How to apply OR Condition in HQL?


I have an HQL query that takes msisdn and subServiceId on an Entity Unsubscription.

Below is the code for the same:

Query query = session.createSQLQuery(unsubscriptionInfodemo)
                .addEntity(Unsubscription.class)
                .setParameter("msisdn", msisdn)
                .setParameter("subServiceId", subServiceId);

Now,I need to check in this Unsubscription entity whether subServiceId is the subServiceId I have passed or it should be the subServiceId I have hardCoded.

Can I apply like

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 query:

unsubscriptionInfodemo=select * from unsubscription s where s.msisdn=:msisdn and s.subservice_id=:subServiceId

Can anyone guide me how to proceed?


Solution

  • How to apply OR Condition in HQL?

    use OR on your query:

    select * from unsubscription s where s.msisdn=:msisdn and s.subservice_id=:subServiceId OR 
    s.subservice_id=:subServiceId2
    

    and name parameters shouldn't be the same:

    .setParameter("msisdn", msisdn)
    .setParameter("subServiceId", subServiceId)
    .setParameter("subServiceId2", "XYZ"); // Make this subServiceId2