Search code examples
javasqlhibernatehibernate-criteria

Hibernate - Could not execute query


I want to do a select * query using hibernate. My DB only has an ID and name column. I'm using the following criterion:

  try {
  SessionFactory sessFact = new Configuration()
  .configure("hibernate.cfg.xml").buildSessionFactory();
  Session sess = sessFact.openSession();
  Transaction tran = sess.beginTransaction();

List<testModel> ans = sess.createCriteria(testModel.class).list();
}

Sadly, I keep on getting the could not execute error: org.hibernate.exception.GenericJDBCException: could not execute query

My Model file is:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--This DTD should also be in the hbm.xml file-->
<hibernate-mapping package="test.model">
  <class name="testModel"
     table="test">

<id name="name_id" type="string" column="name_id">
  <generator class="native">
  </generator>
</id>
<property name="name"
          type="string"
          column="name" />

By the way, when I added the query to my DB, it worked fine.

The Stacktrace generated is:

    [] org.hibernate.exception.GenericJDBCException: could not execute query
[]  at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
[]  at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
[]  at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
[]  at org.hibernate.loader.Loader.doList(Loader.java:2545)
[]  at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
[]  at org.hibernate.loader.Loader.list(Loader.java:2271)
[]  at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
[]  at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
[]  at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
[]  at com.amazon.rhip_dbv3.getHostClassHostsActivity.getHostClassHosts(getHostClassHostsActivity.java:47)
[]  at com.amazon.rhip_dbv3.getHostClassHostsActivity$$FastClassByCGLIB$$296fc5b2.invoke(<generated>)
[]  at org.springframework.internal.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
[]  at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
[]  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
[]  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
[]  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
[]  at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)

[]  at org.apache.catalina.valves.SSLValve.invoke(SSLValve.java:113)
[]  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
[]  at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:894)
[]  at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:728)
[]  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2108)
[]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[]  at java.lang.Thread.run(Thread.java:722)
[] Caused by: java.sql.SQLException: No database selected
[]  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
[]  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
[]  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
[]  at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
[]  at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
[]  at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
[]  at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
[]  at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
[]  at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
[]  at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
[]  at org.hibernate.loader.Loader.doQuery(Loader.java:802)
[]  at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
[]  at org.hibernate.loader.Loader.doList(Loader.java:2542)
[]  ... 37 more

While the query it shows is:

 select this_.name_id as name1_2_0_, this_.name as name2_2_0_,  from test this_

OK I solved it. Simply had the wrong db table name. I hate myself :(


Solution

  • What you've posted is OK with the code. If you need only to list the item in the table, probably don't need a transaction.

    In the stacktrace you can see:

    Caused by: java.sql.SQLException: No database selected.

    Check the connection string...