Hibernate version: hibernate-3.2.6.ga
Hello everyone, new to Hibernet and a little stuck.
Im following the example in the book "java persistence with hibernate" and the reference manual example
but i get an Exception when i try to get the List (with "from Messages" query)
of Messages from the table.
here is the code where the list is called
Code where the exception occours
Code:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction().begin();
List messages = null;
try {
messages = session.createQuery("from hello.Message").list(); //this throws Exception
//messages = session.createCriteria(Message.class).list(); //this works
System.out.println(messages.size() + " messages(s) found");
} catch (Exception ex){
ex.printStackTrace();
}
session.getTransaction().commit();
Exception that occurs:Code:
16:07:59,007 DEBUG ThreadLocalSessionContext:300 - allowing proxied method [createQuery] to proceed to real session
16:07:59,222 DEBUG QueryPlanCache:70 - unable to locate HQL query plan in cache; generating (from Message)
08/02/27 16:08:01 java.lang.NullPointerException
08/02/27 16:08:01 at java.lang.Class.forName0(Native Method)
08/02/27 16:08:01 at java.lang.Class.forName(Class.java:164)
08/02/27 16:08:01 at antlr.CharScanner.setTokenObjectClass(CharScanner.java:337)
08/02/27 16:08:01 at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:31)
08/02/27 16:08:01 at antlr.CharScanner.<init>(CharScanner.java:51)
08/02/27 16:08:01 at antlr.CharScanner.<init>(CharScanner.java:60)
08/02/27 16:08:01 at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:56)
08/02/27 16:08:01 at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:53)
08/02/27 16:08:01 at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:50)
08/02/27 16:08:01 at org.hibernate.hql.ast.HqlLexer.<init>(HqlLexer.java:26)
08/02/27 16:08:01 at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:44)
08/02/27 16:08:01 at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:242)
08/02/27 16:08:01 at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
08/02/27 16:08:01 at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
08/02/27 16:08:01 at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
08/02/27 16:08:01 at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
08/02/27 16:08:01 at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
08/02/27 16:08:01 at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
08/02/27 16:08:01 at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
08/02/27 16:08:01 at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
08/02/27 16:08:01 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
08/02/27 16:08:01 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
08/02/27 16:08:01 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
08/02/27 16:08:01 at java.lang.reflect.Method.invoke(Method.java:585)
08/02/27 16:08:01 at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
08/02/27 16:08:01 at $Proxy0.createQuery(Unknown Source)
08/02/27 16:08:01 at backing.Backing_main.main(Backing_main.java:24)
08/02/27 16:08:01 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
08/02/27 16:08:01 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
08/02/27 16:08:01 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
08/02/27 16:08:01 at java.lang.reflect.Method.invoke(Method.java:585)
08/02/27 16:08:01 at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
08/02/27 16:08:01 at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
08/02/27 16:08:01 at oracle.adf.view.faces.component.UIXCommand.broadcast(UIXCommand.java:211)
08/02/27 16:08:01 at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
08/02/27 16:08:01 at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
08/02/27 16:08:01 at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
08/02/27 16:08:01 at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
08/02/27 16:08:01 at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
08/02/27 16:08:01 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
08/02/27 16:08:01 at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
08/02/27 16:08:01 at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(AdfFacesFilterImpl.java:367)
08/02/27 16:08:01 at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(AdfFacesFilterImpl.java:336)
08/02/27 16:08:01 at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFacesFilterImpl.java:196)
08/02/27 16:08:01 at oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java:87)
08/02/27 16:08:01 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:629)
08/02/27 16:08:01 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
08/02/27 16:08:01 at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
08/02/27 16:08:01 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
08/02/27 16:08:01 at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
08/02/27 16:08:01 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
08/02/27 16:08:01 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
08/02/27 16:08:01 at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
08/02/27 16:08:01 at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:230)
08/02/27 16:08:01 at oracle.oc4j.network.ServerSocketAcceptHandler.access$800(ServerSocketAcceptHandler.java:33)
08/02/27 16:08:01 at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:831)
08/02/27 16:08:01 at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
08/02/27 16:08:01 at java.lang.Thread.run(Thread.java:595)
classes Code:
public class Message{
private Long id;
private String text;
private Message nextMessage;
..
//setters & getters...
}
Mapping documents:Message
Code:
<hibernate-mapping>
<class name="hello.Message" table="MESSAGES">
<id name="id" column="MESSAGE_ID">
<generator class="increment"/>
</id>
<property name="text" column="MESSAGE_TEXT"/>
<many-to-one name="nextMessage" cascade="all" column="NEXT_MESSAGE_ID"
foreign-key="FK_NEXT_MESSAGE"/>
</class>
</hibernate-mapping>
Hibernate Configuration
Code:
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/eventos_schema</property>
<property name="connection.username">XYZ</property>
<property name="connection.password">XYZ</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<!-- <property name="hbm2ddl.auto">create</property> -->
<mapping resource="hello/Message.hbm.xml"/>
so what im missing ? i added all the jars in the lib directory in hibernate-3.2.6.ga.zip
also tryed the code tutorial y the hibernate /doc/tutorial
Code:
//List result = session.createCriteria(Event.class).list(); // this works
List result = session.createQuery("from Event").list(); // this throws the exception
Caused by: java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at antlr.CharScanner.setTokenObjectClass(CharScanner.java:337)
at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:31)
at antlr.CharScanner.<init>(CharScanner.java:51)
at antlr.CharScanner.<init>(CharScanner.java:60)
at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:56)
at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:53)
at org.hibernate.hql.antlr.HqlBaseLexer.<init>(HqlBaseLexer.java:50)
at org.hibernate.hql.ast.HqlLexer.<init>(HqlLexer.java:26)
at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:44)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:242)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
at $Proxy0.createQuery(Unknown Source) at TheBean.getList(TheBean.java:39) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585) at com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:79)
Name and version of the database you are using:
MySql Server 5.0
also another thing that gets me confused is some diferences between the book and the
reference manual examples
in the book (java persistence with hibernate) the session is called
Session session = HibernateUtil
.getSessionFactory()
.openSession();
and in the reference manual
Session session = HibernateUtil
.getSessionFactory()
.getCurrentSession();
what is the diference?
i appreciate help, thank you all..