nykey
发贴: 5
积分: 0
|
于 2005-03-06 00:19
这个是AccountBean文件 package org.jteam.cms.dao;
import java.util.Iterator; import net.sf.hibernate.*; import org.jteam.cms.domain.Account;
/** *和Account相关的业务逻辑 */ public class AccountBean extends HibernateBase { public AccountBean()throws HibernateException { super(); } /** *增加一个Account */ public void addAccount(Account st)throws HibernateException { beginTransaction(); session.save(st); endTransaction(true); } /** *返回系统中所有的Account */ public Iterator getAllAccount()throws HibernateException { String queryString = "select AccountName from Account as account"; beginTransaction(); Query query = session.createQuery(queryString); Iterator it= query.iterate(); return it; } /** *删除给定ID的Account */ public void deleteAccount(String id)throws HibernateException { beginTransaction(); Account course=(Account)session.load(Account.class,id); session.delete(course); endTransaction(true); } /** *按Account的名字进行模糊查找 */ public Iterator getSomeAccount(String name)throws HibernateException { String queryString = "select AccountName from Account as a where a.AccountName like :name" ; beginTransaction(); Query query = session.createQuery(queryString); query.setString("name", "%"+name+"%"); Iterator it= query.iterate(); return it; } } 这个是HibernateBase文件 package org.jteam.cms.dao;
import net.sf.hibernate.HibernateException; import net.sf.hibernate.Session; import net.sf.hibernate.SessionFactory; import net.sf.hibernate.Transaction; import net.sf.hibernate.cfg.Configuration;
public abstract class HibernateBase { protected SessionFactory sessionFactory;//会话工厂,用于创建会话 protected Session session;//hibernate会话 protected Transaction transaction; //hiberante事务 public HibernateBase()throws HibernateException { this.initHibernate(); } // 帮助方法 protected void initHibernate() throws HibernateException {
// 装载配置,构造SessionFactory对象 sessionFactory = new Configuration().configure().buildSessionFactory(); } /** *开始一个hibernate事务 */ protected void beginTransaction() throws HibernateException {
session = sessionFactory.openSession(); transaction = session.beginTransaction(); } /** *结束一个hibernate事务。 */ protected void endTransaction(boolean commit) throws HibernateException {
if (commit) { transaction.commit(); } else { //如果是只读的操作,不需要commit这个事务。 transaction.rollback(); } session.close(); } } hibernate。cfg。xml文件如下 <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory> <property name="connection.datasource">java:comp/env/jdbc/cms</property> <property name="show_sql">false</property> <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>
<!-- Mapping files --> <mapping resource="org/jteam/cms/domain/Account.hbm.xml"/>
</session-factory>
</hibernate-configuration> Account。hbm。xml文件如下 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping> <class name="org.jteam.cms.domain.Account" table="Account"> <id name="aid" column="AID"> <generator class="increment" /> </id> <property name="accountname" column="AccountName" /> <property name="password" column="Password" /> </class> </hibernate-mapping> 连接数据库是通过配置tomcat数据库的连接池来进行连接的 测试代码如下 <%@ page import="java.util.*" errorPage="error.jsp"%>
<jsp:useBean id="account" class="org.jteam.cms.domain.Account" scope="page">
<jsp:setProperty name="account" property="accountname" value="nykey"/> <jsp:setProperty name="account" property="password" value="lin2001"/>
</jsp:useBean>
<jsp:useBean id="accountBusiness" class="org.jteam.cms.dao.AccountBean" scope="page"/>
<html><body><center> <br>::增加一个course::<br>
<%
try
{
if(account.getAid()==1);
else { // accountBusiness.addAccount(account); }
%>
成功添加了Course:<br>
name:<%=account.getAccountname()%>
Id:<%=account.getAid()%>
<%
}
catch(Exception e)
{ out.println(e.getMessage()); }
%>
<hr>
::按名字模糊查找::<br> <% try{ accountBusiness.getSomeAccount("nykey"); } catch(Exception e) { out.print(e.getMessage()); }%>
<hr>
::删除一个Course::<br> <% try{ accountBusiness.deleteAccount("2"); } catch(Exception e) { out.print(e.getMessage()); }%>
<hr>
<br> <% try{ Iterator it=accountBusiness.getAllAccount(); while(it.hasNext()) { account=(org.jteam.cms.domain.Account)it.next(); } } catch(Exception e) { out.print(e.getMessage()); } %>
</body>
</html> 问题是:可以执行添加功能,可一旦进行查找马上就会报错:net.sf.hibernate.QueryException: undefined alias: AccountName [select AccountName from account where aid=1] 按照字面上来理解的意思是说数据库没有这个AccountName这个字段,但是检查一下明明就有,而且如果没有的话又怎么可能插入数据呢?实在是有点想不通 麻烦哪位大侠帮我检查一下,是否哪里出了纰漏,告知一下,在此先谢过了!
|