七分俗人 发表于 2018-8-20 15:15:04

getEntity报错:java.lang.NullPointerException


HotelOrdersEntity hotelOrders = hotelOrdersService.getEntity(HotelOrdersEntity.class, Integer.parseInt(id));按照例子,根据实体名称和主键获取实体。
一直都没有报错,不知道为什么突然这个就报错了。

这个是调试界面的值,Source not found.
明明我在HotelOrdersController类中设的断点
为什么弹出这个 Source not found. 界面

七分俗人 发表于 2018-8-20 16:01:18

HotelOrdersEntity hotelOrders = hotelOrdersService.getEntity(HotelOrdersEntity.class, Integer.parseInt(id));
上面我System.out.println了我的传入的值,是可以正常打印的。
下面我System.out.println了一段字符串,字符串没打印出来,就报错提示空指针异常。
说明这个获取实体类出了问题,但是获取实体类我都是按照上面的例子写的。
调试也没找到问题。还请大神指点一二。

七分俗人 发表于 2018-8-20 16:39:08

大概有个方向了,Java中空指针属于初级错误。
一般有三种解决的思路:
1.类没有初始化,或者初始化不正确。
2.当一个对象的值为空时,没有判断为空的情况。
3.Spring框架的问题。成员没有get set 方法或者设置的问题

Spring的问题,暂时不可知。
个人判断应该是第一个问题,类没有初始化,就直接调用了未初始化类的方法。
hotelOrdersService.getEntity 这个里面的hotelOrdersService 我看了一下是
@Autowired
private HotelOrdersServiceI hotelOrdersService;
这样应该是可以正常调用的。
那么我怀疑应该是HotelOrdersEntity.class这个类的问题。
应该是在实例化这个实体类的时候,有一些字段是需要初始化值的,可能没有初始化值,就会提示这个空指针。
因为对这个minidao还不太熟练,Spring的知识也有些欠缺,这个public方法是我自己在代码生成的类自己加的,所以类上面没有写注解,不知道是不是这个原因。
如果是minidao的问题,我之前也是这样调用实体类,进行操作的,都没有问题。
甚至这一段代码我都是复制上面批量删除的类里面的方法。按照道理应该不会错,代码和类名都检查了。

七分俗人 发表于 2018-8-20 17:55:09

算了,不挣扎了,我再用Online生成一次HotelOrdersEntity类,怀疑是我改了Online里面的配置,没有重新生成代码造成的。:sleepy:

七分俗人 发表于 2018-8-20 18:04:00

重新生成了一遍代码,依然是空指针的异常。看来不是代码问题,现在可以就是语法的问题。或者就是我不应该在这个controller层写逻辑处理代码,应该在service层处理。现在把代码迁移到service中测试一下。good luck to me :loveliness:

七分俗人 发表于 2018-8-20 22:30:46

测试了一下,放Service层,完全行不通。我这里调用的方法都是都是Controller层的方法,而且我这样的写法,别的类都是一样的。字母和代码完全一样,难道不是语法的问题?

fly1206 发表于 2018-8-21 09:43:13

是使用hql 改造下查询试试

七分俗人 发表于 2018-8-21 12:20:00



改造后

七分俗人 发表于 2018-8-21 16:35:55



明显的感觉到,这应该是我缺了什么地方,或者说是什么地方没配置对。
现在用的是systemService.findOneForJdbc方式,直接调用SQL来查询的,都提示java.lang.NullPointerException空指针。
我的环境是:MacOS
jeecg版本是:v 3.7.8
浏览器是:Google

admin 发表于 2018-8-21 17:35:30

你的实体hibernate扫描路径配置了吗
页: [1] 2
查看完整版本: getEntity报错:java.lang.NullPointerException