日期:2014-05-17  浏览次数:21013 次

100分SSH框架+ORACLE,连接数据库异常(不提是错误)
package com.dao.imp;
/**
 * 用户操作实现类
 */
import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import com.dao.imp.UserDao;
import com.entity.User;
public class UserDaoImpl implements UserDao {

private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
//登录
public User doLogin(String U_Name, String U_Password) {
User user=null;
Session session = sessionFactory.openSession();
Transaction tx =null;
try {
String hql = "from Users as user where user.U_Name=‘"+U_Name+"’ and user.U_Password='"+U_Password+"'";
tx = session.beginTransaction();
Query query = session.createQuery(hql);
                        tx.commit();
Iterator it=query.list().iterator();
if(it.hasNext()){
user=(User)it.next();
}
} catch (HibernateException e) {
//如果代码出现异常,则回滚事务
if (tx != null){
tx.rollback();
return user;
}
e.printStackTrace();
}finally {
//关闭Session,释放资源
session.close();
}
return user;
}
public Boolean doAboutName(String oldName, String newName) {
// TODO Auto-generated method stub
return null;
}
public Boolean doAdd(User user) {
// TODO Auto-generated method stub
return null;
}
public List<User> doSelect() {
// TODO Auto-generated method stub
return null;
}
public User doUpdate(User user) {
// TODO Auto-generated method stub
return null;
}

}
红色代码的地方出现异常,直接跳到catch (HibernateException e)处,不知道为什么。求高手指教!!!
------最佳解决方案--------------------
第一中文单引号问题、不能用中文单引号、必须换成英文!!!
‘"+U_Name+"’ 

------其他解决方案--------------------
引用:
引用:
Query query = session.createQuery(hql); 
Query query = session.createSQLQuery(hql);
先区分这个。
你执行的是hql语句,不是sql,你的语句里有sql语句的写法。

用Query query = session.createSQLQuery(hq……


你用createQuery,那么你的整条sql语句都应该是你hibernate里面配置对应数据库里的字段,也就是说就是跟你实体类里面对应的字段。
你的查询的条件U_NAME一看就是数据库里的,你用的是你hibernate里面与之匹配的字段。


<property name="uName" type="java.lang.String">
<column name="U_NAME" />
</property>

查询的时候你的creat