如何在不抛出NullPointerException的情况下比较Null实体

时间:2014-07-28 09:45:22

标签: java hibernate spring-mvc nullpointerexception

我有一个使用Hibernate获取一些数据的方法,但是如果实体是Null,当我尝试与它进行比较时抛出NullPointerException

ExampleController.java

@RequestMapping(value = "/example/{exampleId}")
    public String exampleMethod(@PathVariable("exampleId") final Integer exampleId, final ModelMap model) {

        ExampleEntity ee = this.ExampleEntityService.load(exampleId);
        if (ee.exampleAnidatedEntity() == null) {
            model.addAttribute("exampleAnidatedEntity", ee.exampleAnidatedEntity());
        } else {
            model.addAttribute("exampleAnidatedEntity", new ExampleAnidatedEntity());
        }

// Do some stuff...

3 个答案:

答案 0 :(得分:4)

将此更改为

if (ee!=null && ee.exampleAnidatedEntity() == null) {

这将仅在ee不为空时进行检查。

答案 1 :(得分:1)

我假设您正在使用session.load()来获取对象
“如果load()在高速缓存或数据库中找不到该对象,则抛出异常.load()方法永远不会返回null。如果找不到该对象,则get()方法返回null。 “

ref http://goo.gl/wmi2bf

在这种情况下,您需要在获取 ee 对象时处理空指针异常。

try{
    this.ExampleEntityService.load(exampleId);
   }catch(Exception ne){
        /**handle exception**/
   }

如果你使用的是get(),那么ee可以为null,在这种情况下,null check将是

if (null==ee) {
     return; 
}
if (ee.exampleAnidatedEntity() == null){
/**handle null**/
} else {
/** handle not null**/
} 

答案 2 :(得分:0)

如果你这样做,那就更好了

if (ee !=null && ee.exampleAnidatedEntity() == null) {}