`
tear
  • 浏览: 61102 次
  • 性别: Icon_minigender_2
  • 来自: 广西
社区版块
存档分类
最新评论

HibernateTemplate问题!

阅读更多
为什么我用HibernateTemplate方法返得不到查询结果?
public class RoomDaoImpl extends HibernateDaoSupport implements RoomDao{
public List findUnbookroom()throws Exception{
//String hql="from ROOMS where booked=?";
String hql="from ROOMS";

//return (List)getHibernateTemplate().find(hql,new Integer(0));
return (List)getHibernateTemplate().find(hql);
}

}


public class RoomserviceImpl implements Roomservice{
private RoomDao roomDao=new RoomDaoImpl();
public List findUnbookroom()throws Exception{
return roomDao.findUnbookroom();
}
}

下面是我的测试代码:
public class test2 extends TestCase {

public void test() throws Exception{
Roomservice roomservice=new RoomserviceImpl();
List unbookroomlist=roomservice.findUnbookroom();
Room room=(Room)unbookroomlist.get(0);
//Room room=roomservice.getSelectId(1);
//assertEquals(null,room);
int size=unbookroomlist.size();
//assertEquals("zhong",room.getType());
assertEquals(1,size);
}

}


测试出现红条:
java.lang.NullPointerException
at com.lingirl.RoomDaoImpl.findUnbookroom(RoomDaoImpl.java:21)
at com.lingirl.RoomserviceImpl.findUnbookroom(RoomserviceImpl.java:10)
at com.lingirl.test2.test(test2.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

不知道为什么返回不了查询结果,请问我写的代码有错误吗?
最好谁可以指教一下有关HIBERNATETEMPLATE的用法,谢谢了~~
分享到:
评论
8 楼 dahaizisheng 2007-05-25  
你应该是从AplicationContext 中用getBean取得这个dao才行啊
7 楼 jamesby 2006-12-10  
dao 要注入你的Service,在配置文件中没有看到你的Service的配置.
6 楼 kj23 2006-12-09  
你把抛nullPointer的那行代码指出来啊
5 楼 tear 2006-12-09  
TO eric_chan:
刚才参考别人的一个例子,也发现了这个问题,我现在已经改过来了:
public class RoomserviceImpl implements Roomservice{
private RoomDao roomDao;

public void setRoomDao(RoomDao roomDao){
this.roomDao=roomDao;
}

public List findUnbookroom()throws Exception{
return roomDao.findUnbookroom();
}
}

但是还是一样没有返回查询结果,还是一样的错误~
4 楼 eric_chan 2006-12-09  
public class RoomserviceImpl implements Roomservice{ 
private RoomDao roomDao=new RoomDaoImpl(); 
public List findUnbookroom()throws Exception{ 
return roomDao.findUnbookroom(); 
} 
}


这段代码有问题roomDao应该注射进来,你这样new出来就没有sessionFactory

3 楼 tear 2006-12-09  
To eric_chan:
我已经在配置文件里依赖注入sessionFacory.

风雪涟漪:
    下面是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
    "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<!--
  - springside上说,PropertyPlaceholderConfigurer不能使用lazy-load
  -->
<beans default-lazy-init="false">

    <!--
      - 指定配置文件
      -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:hibernate.properties</value>
            </list>
        </property>
    </bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/test"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="mappingResources">
<list>
<value>com/lingirl/domain/Room.hbm.xml</value>
<value>com/lingirl/domain/Roombook.hbm.xml</value>
<value>com/lingirl/domain/User.hbm.xml</value>
<value>com/lingirl/domain/Client.hbm.xml</value>
</list>
</property>


<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>

<bean id="roomDao" class="com.lingirl.RoomDaoImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
</beans>
2 楼 风雪涟漪 2006-12-09  
把配置文件发上来看看吧
1 楼 eric_chan 2006-12-09  
估计是RoomDaoImpl中没有注入sessionFacory

相关推荐

    hibernateTemplate的常用方法

    通过`HibernateTemplate`,开发者可以非常方便地进行数据的增删改查等基本操作,而无需关心Hibernate Session的开启、关闭及事务管理等问题。本文将详细介绍`HibernateTemplate`的一些常用方法及其应用场景。 #### ...

    HibernateTemplate的用法总结

    - **统一的异常处理**:使用HibernateTemplate可以避免出现由Session关闭不当导致的问题。 - **集成Spring框架**:与Spring框架高度集成,可以方便地管理事务。 - **易于测试**:由于使用了Spring的依赖注入,使得...

    HibernateTemplate详细描述以及使用范围

    2. **事务管理**:通过`HibernateTemplate`可以方便地处理事务边界问题,实现细粒度的事务控制。 3. **批处理操作**:支持批量执行SQL语句,优化数据库访问性能。 4. **自定义查询**:支持HQL(Hibernate Query ...

    hibernateTemplate

    ### HibernateTemplate概述与核心功能详解 #### 一、引言 在Java开发领域,特别是企业级应用开发中,数据持久层的设计与实现至关重要。Hibernate作为一款优秀的对象关系映射(ORM)框架,极大地简化了Java应用程序...

    HibernateTemplate汇总

    HibernateTemplate 汇总 HibernateTemplate 是 Spring 框架中的一個关键组件,用于简化 Hibernate 的使用,提供了許多实用的方法来进行数据库操作。在本文中,我们将对 HibernateTemplate 的主要方法进行总结和解释...

    关于使用HibernateTemplate

    而在使用`HibernateTemplate`时,这些操作都被自动管理,从而避免了因遗漏关闭`Session`而导致的资源泄露问题。 3. **异常处理**:当使用`HibernateTemplate`执行数据库操作时,它会自动捕获并处理Hibernate抛出的...

    HibernateTemplate 的常规用法.doc

    《轻量级 J2EE 企业应用实战: Struts+Spring+Hibernate 整合开发》一书中详述了Spring与Hibernate的整合,其中一个重要组件就是HibernateTemplate。它为简化Hibernate在Spring框架中的使用提供了便利,减少了手动...

    HibernateTemplate的简单示例

    HibernateTemplate的简单示例

    HibernateTemplate源代码

    ### HibernateTemplate源代码解析 #### 一、简介 `HibernateTemplate`是Spring框架中的一个类,位于`org.springframework.orm.hibernate3`包下。它提供了一系列简化Hibernate数据访问操作的方法,并且能够自动将...

    HibernateTemplate的方法使用

    ### HibernateTemplate 的方法使用 #### 一、简介与配置方式 **HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、...

    hibernateTemplate批量删除数据

    在实际开发中,批量删除操作可能会遇到各种异常情况,例如数据库连接问题、SQL语法错误等。因此,在调用`execute()`方法时,通常会捕获`HibernateException`和`SQLException`,并进行相应的错误处理。此外,为了...

    hibernateTemplate常用方法.htm

    hibernateTemplate常用方法.htm

    一个模拟Spring将SessionFactory注入到HibernateTemplate的小例子

    本示例将深入探讨如何使用Spring将SessionFactory注入到HibernateTemplate中,从而实现数据库操作的便捷管理。 首先,让我们了解几个关键组件: 1. SessionFactory:这是Hibernate的核心工厂类,用于创建Session...

    HibernateTemplate分组统计

    ### HibernateTemplate 分组统计知识点详解 #### 一、概述 在Java Web开发中,尤其是在使用...这不仅有助于更好地理解和掌握Spring与Hibernate的集成方式,同时也为解决实际项目中的复杂数据处理问题提供了有效途径。

    简单封装 HibernateTemplate 各项功能

    GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。

    HibernateTemplate类的使用

    ### HibernateTemplate类的使用详解 #### 一、引言 在Java开发中,持久层框架Hibernate因其优秀的ORM(Object-Relational Mapping)特性被广泛应用。为了更便捷地使用Hibernate,Spring框架提供了一系列工具类来简化...

    基于HIbernateTemplate的代码自动生成

    `HibernateTemplate`是Spring框架对Hibernate ORM(对象关系映射)的一种封装,它简化了与数据库交互的复杂性,而"基于HibernateTemplate的代码自动生成"正是为了进一步提升开发效率而设计的一种技术手段。...

    对hibernate的封装 HibernateTemplate

    为了解决这些问题,Spring框架提供了一个称为HibernateTemplate的类,它是对Hibernate API的一个封装,旨在提高开发效率和代码的可维护性。 **一、HibernateTemplate介绍** HibernateTemplate是Spring框架的一个...

    HibernateTemplate及generator用法.doc

    而`HibernateTemplate`则可以更好地控制和管理Session,避免这个问题。 以下是`getSession`的一些常用操作: - 查询:`getSession().find()`, `getSession().createQuery()` - 保存:`getSession().save()`, `...

Global site tag (gtag.js) - Google Analytics