Ola pessoal
Estou tento problemas no hibernate usando a sequinte query
private static final String listPersonsOfCompany =
"select " +
" new Person(person.pkPerson, person.name, person.born) " +
"from " +
" Person as person " +
" right join person.company as company " +
"where " +
" company.name like( :companyName )";
public List<Person> listPerson(Person entity){
Session session = getSession();
Query select = session.createQuery(listPersonsOfCompany);
select.setString("companyName", entity.getCompany().getName());
List<Person> persons = (List<Person>)select.list();
return persons;
}
O problema ocorre qunado nao existe registros no banco, por exemplo
like( ‘ibm’ )"; isso funciona normal
like( ‘cicrana’ ); isso nao funciona pois cicrano nao existe no banco de dados e ocorre o seguinte erro ao invez de retornar uma lista vazia
Caused by: javax.faces.el.EvaluationException: org.hibernate.QueryException: could not instantiate: br.com.peopleway.model.persistence.to.Person
at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:130)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
... 32 more
Caused by: org.hibernate.QueryException: could not instantiate: br.com.peopleway.model.persistence.to.Person
at org.hibernate.hql.HolderInstantiator.instantiate(HolderInstantiator.java:45)
at org.hibernate.loader.hql.QueryLoader.getResultList(QueryLoader.java:356)
....
Caused by: java.lang.IllegalArgumentException
at sun.reflect.GeneratedConstructorAccessor52.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
Parece que ocorre um erro pois nao é possivel instancia a classe Person, o que deve ocorrer nessa parte do Query “select new Person(person.pkPerson, person.name, person.born)…”
Acreditava que o hibernate deveria tratar isso, basicamente o que estou tentando fazer é consultar as pessoas de uma determinada empresa.
Desde ja muito obrigado