2016-04-11 5 views
0

Ich bin neu bei Hibernate.org.hibernate.hql.internal.ast.QuerySyntaxException: Benutzer ist nicht zugeordnet

Ich versuche, eine Online-Benutzerumfrage mit Hibernate zu erstellen, mit Oracle 10g DB-Konnektivität. Nach einer Flut von Problemen zu lösen, habe ich mit diesem Problem aufgeklebt:

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

Hier ist 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; 
    } 
} 

Hier ist 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; 

    // ... 
} 

Hier 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; 
    } 
} 

Her 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> 

Edit:

Ich tat, was die toll Leute hier vorgeschlagen, das heißt Mapping-Klasse in die XML-Datei hinzuzufügen. Das hat den ursprünglichen Fehler behoben. Aber jetzt, ich bin vor einem anderen Fehler: HTTP-Status 500 - org.hibernate.exception.GenericJDBCException: konnte nicht extrahieren ResultSet

Der vollständige Stack-Trace ist hier:

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) 

Bitte helfen wieder Jungs ! Danke vielmals!

Antwort

1

fügen Sie diese zwischen <session-factory> </session-factory> in hibernate.cfg.xml

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

Sie Mapping-Entity-Klasse

0

Ändern Sie die Zeile verpassen:

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

zu:

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

EDIT: und bitte, entfernen Sie die @Entity auf Ihrem verwalteten Bohne StudentService

+0

Es braucht nicht 'AddPackage ("com.demo")' –

0

Sie müssen hinzufügen als @kakashiHatake

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

vorgeschlagen Und wenn Sie Hibernate 5 Sie müssen die Sitzung Fabrik auf diese Weise konfigurieren

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

Hey @ v.ladynev, habe ich, was Sie und kakashiHatake vorgeschlagen. Der Fehler, der früher ausgelöst wurde, wurde behoben, aber jetzt wird ein neuer Fehler angezeigt: HTTP Status 500 - org.hibernate.exception.GenericJDBCException: konnte ResultSet nicht extrahieren – CodeNinja

+0

@CodeNinja Bitte fügen Sie den vollständigen Stack-Trace hinzu Deine Frage als Code! Es ist unmöglich, eine Ursache für einen Fehler zu finden, indem nur der erste Teil des Stack-Trace verwendet wird! –

+0

Hallo @ v.ladynev, ich habe die Stack-Trace zur Frage hinzugefügt. Bitte schauen Sie und helfen Sie mir bitte! Danke vielmals!:) – CodeNinja