Возможно, вы ожидаете примитив от обнуляемого столбца.
Hibernate использует отражение для создания объектов.
public class A {
private long id;
private int n;
public void setN(int n) { this.n = n; }
public int getN() { return this.n; }
// id
}
Если вы получите A
объект с DAO.get(id, A.class)
, он будетсмонтировать как:
select a_.id, a_.n from A a_ where a_id = ? /* Where ? is the id */
Тогда это будет выглядеть следующим образом (обратите внимание, что это просто для иллюстрации моего примера):
A a = new A();
a.setId([a_.id])
a.setN([a_.n])
Если вы получите две строки:
id n
1 1
2 NULL
он попытается создать экземпляр объекта A
и установить его атрибут n
с помощью setN(null)
.Так как подпись является примитивом, это вызовет ошибку.
Просмотрите описание таблицы, чтобы увидеть, есть ли какие-либо столбцы, которые могут содержать пустые значения.Если это так, позаботьтесь о том, чтобы не ожидать каких-либо примитивов в установщиках.
Это означает, что при выполнении hibernate
выполнение setPrimitive(null) // signature setPrimitive(long l)
завершается неудачей.