1

ハイバネートを使用して select * クエリを実行したいと考えています。私のDBにはIDと名前の列しかありません。私は次の基準を使用しています。

  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();
}

悲しいことに、私はエラーを実行できませんでした: org.hibernate.exception.GenericJDBCException: could not execute query

私のモデルファイルは次のとおりです。

<?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" />

ちなみに、クエリをDBに追加したところ、うまくいきました。

生成されるスタックトレースは次のとおりです。

    [] 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

それが示すクエリは次のとおりです。

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

私はそれを解決しました。単純に間違った db テーブル名がありました。私は自分自身が嫌いです :(

4

1 に答える 1