Как уже упоминалось в ваших комментариях: -
query.addScalar("id",Hibernate.STRING);
query.addScalar("companyname",Hibernate.STRING);
query.addScalar("fullname",Hibernate.STRING);
query.addScalar("empid",Hibernate.STRING);
query.addScalar("dateallocated",Hibernate.STRING);
query.addScalar("status",Hibernate.STRING);
query.setResultTransformer(Transformers.aliasToBean(TestPojo.class));
list=query.list();
Объяснение :
Для общего объяснения Hibernate выбирает наиболее подходящий способ представления данных. Поэтому я предполагаю, что IDs
хранятся в числовом формате. Следовательно, Hibernate считает их Long
. Метод aliasToBean
вызывает конструктор по умолчанию для создания объекта TestPojo
. Затем он ищет методы-установщики для своих самообнаруженных типов. В этом случае, вероятно, он ищет метод с подписью
public void setId(Long id)
этот вызов переходит к перегруженному методу public void setId(String id)
Поскольку Long
не String
, вы получаете IllegalArgumentException
.
То, что вы сделали в решении, явным образом определило значения, которые будут приняты как тип String
, следовательно, теперь метод установки, используемый Hibernate, становится public void setId(String id)
, следовательно, решая вашу проблему.
Обратите внимание: - Если вы хотите использовать addScalar()
, вам нужно использовать его для всех необходимых членов данных.