ACTION:UserService userService = new UserService();
UserDao userDao = new UserDao();
User user = new User();
user.setName(name);
user.setPassword(password);
user.setEmail(email);
user.setPhone(phone);
user.setCompany(company);
user.setAddress(address);
user.setCreateTime(new Date());
user.setModificationTime(new Date());
37行------------- userDao.save(user)-------------------------------------------
暂时没调用service, dao的代码:
@Repository
public class UserDao extends HibernateDao<User> {
}
-------------------------------------------
HibernateDao里面的save部分代码:
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
--------------------------------------------
spring.xml:
<context:annotation-config />
<context:component-scan base-package="com.shop.dao" />
<context:component-scan base-package="com.shop.service" />
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="minPoolSize" value="5"/>
<property name="maxPoolSize" value="30"/>
<property name="acquireIncrement" value="5"/>
<property name="maxIdleTime" value="120"/>
<property name="maxStatements" value="100"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.shop.entity" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
<prop key="hibernate.hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.jdbc.use_streams_for_binary">true</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
<prop key="hibernate.autoReconnect">true</prop>
</props>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="sessionFactory"/></property>
</bean>
<!-- 支持@Transactional -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<!-- 支持@AspectJ -->
<aop:aspectj-autoproxy />
--------------------------------------------------------------------------
报错的代码就是空指针,没头绪啊:
java.lang.NullPointerException
com.shop.dao.base.HibernateDao.save(HibernateDao.java:672)
com.shop.action.RegisterAction.execute(RegisterAction.java:37)
前辈们帮帮忙看看。。。愁死我了
22 个解决方案
#1
com.shop.dao.base.HibernateDao.save(HibernateDao.java:672)
这个文件的 672 行是啥?
这个文件的 672 行是啥?
#2
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
getHibernateTemplate().saveOrUpdate(o);
}
#3
UserDao userDao = new UserDao();
dao能这样初始化?
dao能这样初始化?
#4
那个HibernateDao中是否注入了dataSource ?
#5
自动装配也不行,我就暂时这样new一下,也不行吗?貌似可以的,System.out.println在dao里面可以输出值
#6
在spring.xml配了datasource,在HibernateDao怎么注入?求详细?,
#7
在线求助啊~
#8
单测试一下dao吧 先
#9
T对象那里传过去的。T对象是空的!
#10
HibernateDao.java:672
672行!
672行!
#11
672行调用的事这个方法
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
#12
userDao.save(user)调用的事UserDao里面的,继承于hibernateDao里面的save()方法
#13
一般楼主出现的是空指针由于某某实例没有注入导致在保存的时候无法得到操作数据库的实例变量
可能是dao层 也可能是service层未注入 希望仔细检查
可能是dao层 也可能是service层未注入 希望仔细检查
#14
dao save方法里看看o有没有值?
#15
用了Spring 后, 你的dao 还能new 吗? 都是有容器注入的。
首先在你检查了配置无误后,是这样的到dao
如果你的是个例子试一试下面的。
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserDao udao= (也许这里是你的接口)bf.getBean("dao的名字");
首先在你检查了配置无误后,是这样的到dao
如果你的是个例子试一试下面的。
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserDao udao= (也许这里是你的接口)bf.getBean("dao的名字");
#16
嗯就是因为没有注入进来报空指针,service暂时没有调用,不知问题出在哪里?
#17
有值的
#18
debug你的程序 看那个对象是空。。
#19
sessionFactory没有注入。。。
#20
spring已经注入了啊!Quote=引用 19 楼 的回复:]
sessionFactory没有注入。。。
[/Quote]
sessionFactory没有注入。。。
[/Quote]
#21
用了它的框架以后,不能用new来实例化,只能靠框架来提供
#22
用在action里面用这样注入dao就可以:
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = ctx.getBean("userDao",UserDao.class);
但是这样太麻烦了,哎...
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = ctx.getBean("userDao",UserDao.class);
但是这样太麻烦了,哎...
#1
com.shop.dao.base.HibernateDao.save(HibernateDao.java:672)
这个文件的 672 行是啥?
这个文件的 672 行是啥?
#2
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
getHibernateTemplate().saveOrUpdate(o);
}
#3
UserDao userDao = new UserDao();
dao能这样初始化?
dao能这样初始化?
#4
那个HibernateDao中是否注入了dataSource ?
#5
自动装配也不行,我就暂时这样new一下,也不行吗?貌似可以的,System.out.println在dao里面可以输出值
#6
在spring.xml配了datasource,在HibernateDao怎么注入?求详细?,
#7
在线求助啊~
#8
单测试一下dao吧 先
#9
T对象那里传过去的。T对象是空的!
#10
HibernateDao.java:672
672行!
672行!
#11
672行调用的事这个方法
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
public void save(T o) {
getHibernateTemplate().saveOrUpdate(o);
}
#12
userDao.save(user)调用的事UserDao里面的,继承于hibernateDao里面的save()方法
#13
一般楼主出现的是空指针由于某某实例没有注入导致在保存的时候无法得到操作数据库的实例变量
可能是dao层 也可能是service层未注入 希望仔细检查
可能是dao层 也可能是service层未注入 希望仔细检查
#14
dao save方法里看看o有没有值?
#15
用了Spring 后, 你的dao 还能new 吗? 都是有容器注入的。
首先在你检查了配置无误后,是这样的到dao
如果你的是个例子试一试下面的。
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserDao udao= (也许这里是你的接口)bf.getBean("dao的名字");
首先在你检查了配置无误后,是这样的到dao
如果你的是个例子试一试下面的。
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserDao udao= (也许这里是你的接口)bf.getBean("dao的名字");
#16
嗯就是因为没有注入进来报空指针,service暂时没有调用,不知问题出在哪里?
#17
有值的
#18
debug你的程序 看那个对象是空。。
#19
sessionFactory没有注入。。。
#20
spring已经注入了啊!Quote=引用 19 楼 的回复:]
sessionFactory没有注入。。。
[/Quote]
sessionFactory没有注入。。。
[/Quote]
#21
用了它的框架以后,不能用new来实例化,只能靠框架来提供
#22
用在action里面用这样注入dao就可以:
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = ctx.getBean("userDao",UserDao.class);
但是这样太麻烦了,哎...
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
UserDao userDao = ctx.getBean("userDao",UserDao.class);
但是这样太麻烦了,哎...