避免 "Hibernate exception Null value was assigned to a property of primitive type setter" 没有包装器

Avoid "Hibernate exception Null value was assigned to a property of primitive type setter" without wrappers

在由 hibernate 管理的实体上有一个长字段对于 null 值可能是危险的。当 Hibernate 尝试将 null 设置为原语时,将抛出异常。

最好的解决方案应该是使用 Long 而不是 long,这样可以将 null 分配给 Long 字段。

但是,我正在处理一个不能使用 Long 或 Integer 类型的项目。我想知道是否有一种方法可以覆盖休眠类型以使用 nullSafe 方法或类似方法。

我总是使用封装的 class 类型,但如果不能,您可以在持久化之前检查实体属性,例如:

if (entity.getAttribute == null){
entity.setAttribute(0); //case of long, int...
}

终于我实现了 UserTypeof hibernate,如下所述:http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch06.html#types-custom