我的DAO代码是这样的package dao;import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import wp.Worker;public class WorkerDao extends HibernateDaoSupport implements ImpWorkerDao{ public Worker getWorker(String empno) {
HibernateTemplate ht = this.getHibernateTemplate();
try{
Worker wk = (Worker)ht.find("from t_worker where empno=?", empno);
return wk;
}
catch(Exception e){
e.printStackTrace();
return null;
}
} public boolean insertWorker(Worker wk) {
HibernateTemplate ht = this.getHibernateTemplate();
try{
ht.save(wk);
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
} } public boolean updateWorker(Worker wk) { HibernateTemplate ht = this.getHibernateTemplate();
try{
ht.update(wk);
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
}
}}
下面是持久化类<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="wp.Worker" table="T_WORKER" lazy="true">
<id name="empno" column="EMPNO" >
<generator class="assigned" />
</id>
<property name="passwd" column="PASSWD" />
<property name="empname" column="EMPNAME" />
<property name="sex" column="SEX" />
<property name="wage" column="WAGE" />
</class>
</hibernate-mapping>
然后是hibernate的配置文件<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:127.0.0.1:1521:ORCL
</property>
<property name="connection.username">sys as SYSDBA</property>
<property name="connection.password">brilliance</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">
MyEclipse Derby
</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="wp/Worker.hbm.xml" /></session-factory></hibernate-configuration>
运行的时候没有任何的错误提示,也可以插入数据,但是就是查询的时候返回的结果为null
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import wp.Worker;public class WorkerDao extends HibernateDaoSupport implements ImpWorkerDao{ public Worker getWorker(String empno) {
HibernateTemplate ht = this.getHibernateTemplate();
try{
Worker wk = (Worker)ht.find("from t_worker where empno=?", empno);
return wk;
}
catch(Exception e){
e.printStackTrace();
return null;
}
} public boolean insertWorker(Worker wk) {
HibernateTemplate ht = this.getHibernateTemplate();
try{
ht.save(wk);
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
} } public boolean updateWorker(Worker wk) { HibernateTemplate ht = this.getHibernateTemplate();
try{
ht.update(wk);
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
}
}}
下面是持久化类<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="wp.Worker" table="T_WORKER" lazy="true">
<id name="empno" column="EMPNO" >
<generator class="assigned" />
</id>
<property name="passwd" column="PASSWD" />
<property name="empname" column="EMPNAME" />
<property name="sex" column="SEX" />
<property name="wage" column="WAGE" />
</class>
</hibernate-mapping>
然后是hibernate的配置文件<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:127.0.0.1:1521:ORCL
</property>
<property name="connection.username">sys as SYSDBA</property>
<property name="connection.password">brilliance</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">
MyEclipse Derby
</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="wp/Worker.hbm.xml" /></session-factory></hibernate-configuration>
运行的时候没有任何的错误提示,也可以插入数据,但是就是查询的时候返回的结果为null
ht.find("from t_worker where empno=?", empno);
那你这里就写错了!不是表名而是实体类名呀。
t_worker换成 Worker
ht.get(Worker.class, empno);
get()抛异常就有点奇怪了啊!get()加载不到数据会返回null
配置问题也不在这么,改成
Worker wk = (Worker)ht.find("from wp.Worker where empno=?", empno);
得到后先看结果集是否为空