2016-04-11 4 views
0

私はHibernateを初めて使用しています。org.hibernate.hql.internal.ast.QuerySyntaxException:ユーザーがマップされていません

Oracle 10g DB接続で、Hibernateを使用したオンラインユーザーアンケートを作成しようとしています。問題の突風を解決した後、私はこの問題で立ち往生されています:

HTTP Status 500 - org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [select max(users.id) from User users]

はここUserDAO.java

public class UserDAO { 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    public void save(User user){ 
     session.beginTransaction(); 
     session.save(user); 
     session.getTransaction().commit(); 
     session.close(); 
    } 
    public Integer getId(){ 
     String hql = "select max(users.id) from User users"; 
     Query query = session.createQuery(hql); 
     List<Integer> results = query.list(); 
     Integer userId = 1; 
       if (results.get(0) != null) { 
       userId = results.get(0) + 1; 
       } 
       return userId; 
    } 
} 

ここUser.javaがあるさ:ここでは

@Entity 
@Table(name="User") 
public class User { 


    @Column(name="firstname") 
    private String firstname; 

    @Column(name="lastname") 
    private String lastname; 


    @Column(name="address") 
    private String address; 

    @Column(name="city") 
    private String city; 

    @Column(name="state") 
    private String state; 

    @Column(name="zip") 
    private String zip; 


    @Column(name="phone") 
    private String phone; 

    @Id 
    @Column(name="email") 
    private String email; 

    @Column(name="date") 
    private Date todayDate; 

    @Column(name="semdate") 
    private Date semDate; 

    // ... 
} 

はHibernateUtilのです.java:

public class HibernateUtil { 
    private static SessionFactory sessionFactory ; 
    static { 
     Configuration configuration = new Configuration().configure(); 
     StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder() 
             .applySettings(configuration.getProperties()); 
     sessionFactory = configuration.buildSessionFactory(builder.build()); 
    } 
    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 

彼女eはhibernate.cfg.xmlのです:

<?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"> 
    <hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
     <property name="hibernate.connection.url">jdbc:oracle:thin:@apollo.vse.gmu.edu:1521:ite10g</property> 
     <property name="hibernate.connection.username">name</property> 
     <property name="hibernate.connection.password">password</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 
     <property name="hibernate.default_schema">name</property> 
     <property name="show_sql">true</property> 

    </session-factory> 
    </hibernate-configuration> 

編集:私はここで素晴らしい人々が提案し何をした

、それがXMLファイルにマッピングクラスを追加することです。元のエラーは削除されました。しかし、今、私はいくつかの他のエラー直面しています: HTTPステータス500 - org.hibernate.exception.GenericJDBCException:

type Exception report 

message org.hibernate.exception.GenericJDBCException: could not extract ResultSet 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 
javax.servlet.ServletException: org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 


root cause 
javax.faces.el.EvaluationException: org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) 
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
    javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 


root cause 
org.hibernate.exception.GenericJDBCException: could not extract ResultSet 
    org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) 
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) 
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:89) 
    org.hibernate.loader.Loader.getResultSet(Loader.java:2065) 
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862) 
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) 
    org.hibernate.loader.Loader.doQuery(Loader.java:909) 
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 
    org.hibernate.loader.Loader.doList(Loader.java:2553) 
    org.hibernate.loader.Loader.doList(Loader.java:2539) 
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369) 
    org.hibernate.loader.Loader.list(Loader.java:2364) 
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:496) 
    org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) 
    org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:231) 
    org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264) 
    org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) 
    com.pratikshinde.swe645.UserDAO.getId(UserDAO.java:18) 
    com.pratikshinde.swe645.StudentService.saveUser(StudentService.java:361) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:497) 
    org.apache.el.parser.AstValue.invoke(AstValue.java:247) 
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267) 
    com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) 
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
    javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 


root cause 
java.sql.SQLException: Io exception: Size Data Unit (SDU) mismatch 
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) 
    oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:256) 
    oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:828) 
    oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1050) 
    oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:853) 
    oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1155) 
    oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3414) 
    oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3459) 
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:80) 
    org.hibernate.loader.Loader.getResultSet(Loader.java:2065) 
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862) 
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) 
    org.hibernate.loader.Loader.doQuery(Loader.java:909) 
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 
    org.hibernate.loader.Loader.doList(Loader.java:2553) 
    org.hibernate.loader.Loader.doList(Loader.java:2539) 
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369) 
    org.hibernate.loader.Loader.list(Loader.java:2364) 
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:496) 
    org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) 
    org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:231) 
    org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264) 
    org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) 
    com.pratikshinde.swe645.UserDAO.getId(UserDAO.java:18) 
    com.pratikshinde.swe645.StudentService.saveUser(StudentService.java:361) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:497) 
    org.apache.el.parser.AstValue.invoke(AstValue.java:247) 
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267) 
    com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) 
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
    javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

は親切に再びみんな手伝っ:

完全なスタックトレースがここにあるResultSetを抽出することができませんでした!ありがとう、トン!

Configuration configuration = new Configuration().configure(); 

へ:

Configuration configuration = new Configuration() 
             .addPackage("com.demo") 
             .addAnnotatedClass(User.class) 
             // add all other classes you want 
             .configure(); 

答えて

1

あなたは

0

変更にマッピングエンティティクラスにラインを欠場hibernate.cfg.xml

<mapping class ="com.demo.User"/> 

<session-factory> </session-factory>の間にこれを追加EDIT:と、StudentService

+0

それは 'addPackage( "com.demo")' –

0

あなたは@kakashiHatakeが

<mapping class ="com.demo.User"/>

を示唆して追加する必要があり、休止5を使用する場合はセッションファクトリをこのように設定する必要があり、管理対象Beanで@Entityを削除してください

sessionFactory = new Configuration().configure().buildSessionFactory(); 
+0

ねえ@ v.ladynevが必要とされていない、私はあなたとkakashiHatakeが提案するものでした。 HTTPステータス500 - org.hibernate.exception.GenericJDBCException:ResultSetを抽出できませんでした – CodeNinja

+0

@ CodeNinja thrの完全なスタックトレースを次のように追加してください。コードとしてのあなたの質問!スタックトレースの最初の部分だけを使用してエラーの原因を取得することは不可能です! –

+0

こんにちは@ v.ladynev、私は質問にスタックトレースを追加しました。親切に見て、私を助けてください!どうもありがとう!:) – CodeNinja

関連する問題