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?