显示这段代码出错:   List userList = q.list();
2010-4-7 23:08:12 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: com.lgd.Hibernate.User
at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:101)
at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:123)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.instantiate(AbstractEntityTuplizer.java:374)
at org.hibernate.persister.entity.AbstractEntityPersister.instantiate(AbstractEntityPersister.java:3634)
at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1302)
at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1291)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1323)
at org.hibernate.loader.Loader.getRow(Loader.java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at com.lgd.Hibernate.UserDAO.isValidUser(UserDAO.java:38)
at com.lgd.struts.action.LoginAction.execute(LoginAction.java:48)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
public class UserDAO extends BaseHibernateDAO{
private static final Log log = LogFactory.getLog(UserDAO.class);
// property constants
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
public static final String ACCOUNT = "account"; public boolean isValidUser(String username, String password) {
Session session = HibernateSessionFactory.getSession();
        String hql = "from User u where Username='"+username+"' and Password='"+password+"'";
Query q = session.createQuery(hql);
        List userList = q.list();
if (userList.size() > 0) { return true; } return false; }

解决方案 »

  1.   

    再补充一下,我用的是MyEclipse7.5,新建Hibernate时,选择自动新建了user的抽象类,后来删除了。。
      

  2.   

    把这个类BaseHibernateDAO换成HibernateDaoSupport试一下~
      

  3.   

    hibernate配置文件中加上映射文件没
      

  4.   

        你注意一下你的配置文件里边是不是引用了抽象类USER那个
         因为报的错误是没有实例话接口。
         所以你查看一下吧
      

  5.   

    数据库不让用User做库名,你看看你库名是啥,是不是user,如果是的话改成别的看能不能好使
      

  6.   

    不要用关键字~~ 什么 user key啊之类的
      

  7.   

    库名是bank,,表名是user,,可不可以??
      

  8.   

    com.lgd.Hibernate.User
    1,不要用user做表名
    2,你删除了抽象类,那是不是也把配置文件中的也删除了。
      

  9.   

    如何库表名称与数据库关键字一样 在配置文件里 这样配置 ~user
      

  10.   

    把你的User类实现系列化了就应该OK了
    public class user implements java.io.Serializable{
    }这样就应该好了
      

  11.   

    把表名改了,重新生成了一遍代码,结果好了。。
    可  为什么不能是user表名呀??和什么冲突??还有我删除了抽象类,查看配置文件,User.hbm.xml里面没有与抽象类相关的定义呀?是本来就没有的。。不知你指的是是什么。。
      

  12.   


    人家MyEclipse自动实现序列化接口的。。