IN query with hibernate having list of objects as parameter by grouping

149 Views Asked by At

I am trying to do a hibernate query in java using createQuery method where I am have to check group of 3 columns check with WHERE condition as list. But i am getting error Could not determine a type for class:Aliases. I am sure with primitive data type we can achieve this.But is it possible we can achieve this query if we have list of pojo class object

long personTypeVal = 12;
List<Aliases> aliasesGroup = new ArrayList<Aliases>();
Aliases alias = new Aliases();
alias.setAlias("3123");
alias.setAliasPoolCd(312312321);
alias.setPersonAliasTypeCd(32131);
Aliases alias1 = new Aliases();
alias1.setAlias("13123");
alias1.setAliasPoolCd(1312312321);
alias1.setPersonAliasTypeCd(312321);
aliasesGroup.add(alias);
aliasesGroup.add(alias1);
Query query = em.createQuery(
        "SELECT PA.personAliasId,PA.personId,PA.activeInd,PA.activeStatusCd,PA.aliasPoolCd,PA.personAliasTypeCd,PA.alias,P.personId\r\n"
                + "         FROM  Person P ,PersonAlias PA WHERE (PA.alias,PA.aliasPoolCd,PA.personAliasTypeCd) IN (:aliases)  \r\n"
                + "          AND P.personTypeCd = :personTypeCd");

query.setParameterList("aliases", aliasesGroup);
query.setParameter("personTypeCd", personTypeVal);
List<PersonAlias> personAliasesResult = query.getResultList();

My doubt is whether we can have something like this and test? WHERE (PA.alias,PA.aliasPoolCd,PA.personAliasTypeCd) IN (:aliases)

Aliases object has only these 3 fields. So I thought it would map values directly

public class Aliases {

    private String alias;
    private long aliasPoolCd;
    private String personAliasTypeCd;
}

Can anyone please check and help if this can be achieved?

0

There are 0 best solutions below