Русский English Тэги View Sergey Zolotaryov's profile on LinkedIn Вход
NullPointerException при обращении к свойствам примитивных типов
Постоянная ссылка 22-08-2007 anydoby java

Давно хотел написать на эту тему, да удачного примера не попадалось. А сегодня вот попался :)

Замэпил я один класс в iBATIS:


public class Shop {

	private int id;

	private String name;

	private String addressLine;
	
	private String city;
	
	private String phones;
	
	private ShopNetwork network;
	
	private int map;

map это опциональный параметр, то есть в базе на этом месте будет null. Помню, в первых версиях Hibernate в случае, если значение в базе null, в объект попадал 0. Для определенных ситуаций это неплохо. Но все-таки правильное решение - заводить поле типа Integer, чтобы null обрабатывался корректно.

На этот раз iBATIS "порадовал" меня NPE. Причем стек был совершенно странным:


com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/anydoby/catalog/dao/pojo/enums.xml.  
--- The error occurred while applying a result map.  
--- Check the enums.shopWithNetwork.  
--- The error happened while setting a property on the result object.  
--- Cause: net.sf.cglib.beans.BulkBeanException
....
net.sf.cglib.beans.BulkBeanException
	com.anydoby.catalog.dao.pojo.Shop$$BulkBeanByCGLIB$$4d784893.
setPropertyValues(<generated>)
....
java.lang.NullPointerException
	com.anydoby.catalog.dao.pojo.Shop$$BulkBeanByCGLIB$$4d784893.
setPropertyValues(<generated>)

Если бы я не собирался давно написать эту статью, наверное, я бы не понял, в чем дело, а так сразу поменял int на Integer и все заработало :)

Добавить комментарий

Предыдущая статья Ошибка Firebird 335544344 Следующая статья Как я пофиксил неправильную кодировку названий папок с FCKEditor