1

テーブルから特定の値を選択し、休止状態を使用して出力する Java アプリケーションを作成しました。バックエンドとして HSQLDb を使用しました。しかし、実行後、ユーザーに権限がないか、オブジェクトが見つからないというエラーが表示されます。しかし、クエリを取得しています。初めて実行するとき

Hibernate: IF_MAIN ifmain0_ から ifmain0_.IF_ID を IF1_0_ として、ifmain0_.IF_NAME を IF2_0_ として選択します。

しかし、その後、上記のエラーが発生します。だから私はsample.lckファイルを削除し、もう一度2回実行した後、同じエラーが発生しています

エラー org.hibernate.util.JDBCExceptionReporter - ユーザーに権限がないか、オブジェクトが見つかりません: IF_MAIN

org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
    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.hql.QueryLoader.list(QueryLoader.java:459)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:365)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.mock.Mainclass.listNAMES(Mainclass.java:31)
    at org.mock.Mainclass.main(Mainclass.java:22)
Caused by: java.sql.SQLException: user lacks privilege or object not found: IF_MAIN
    at org.hsqldb.jdbc.Util.sqlException(Util.java:224)
    at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(JDBCPreparedStatement.java:3885)
    at org.hsqldb.jdbc.JDBCConnection.prepareStatement(JDBCConnection.java:641)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
    at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700)
    at org.hibernate.loader.Loader.doQuery(Loader.java:801)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2542)
    ... 9 more
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: IF_MAIN
    at org.hsqldb.error.Error.error(Error.java:77)
    at org.hsqldb.SchemaManager.getTable(SchemaManager.java:685)
    at org.hsqldb.ParserDQL.readTableName(ParserDQL.java:5297)
    at org.hsqldb.ParserDQL.readTableOrSubquery(ParserDQL.java:1662)
    at org.hsqldb.ParserDQL.XreadTableReference(ParserDQL.java:1074)
    at org.hsqldb.ParserDQL.XreadFromClause(ParserDQL.java:1061)
    at org.hsqldb.ParserDQL.XreadTableExpression(ParserDQL.java:996)
    at org.hsqldb.ParserDQL.XreadQuerySpecification(ParserDQL.java:990)
    at org.hsqldb.ParserDQL.XreadSimpleTable(ParserDQL.java:974)
    at org.hsqldb.ParserDQL.XreadQueryPrimary(ParserDQL.java:903)
    at org.hsqldb.ParserDQL.XreadQueryTerm(ParserDQL.java:869)
    at org.hsqldb.ParserDQL.XreadQueryExpressionBody(ParserDQL.java:848)
    at org.hsqldb.ParserDQL.XreadQueryExpression(ParserDQL.java:822)
    at org.hsqldb.ParserDQL.compileCursorSpecification(ParserDQL.java:5449)
    at org.hsqldb.ParserCommand.compilePart(ParserCommand.java:133)
    at org.hsqldb.ParserCommand.compileStatement(ParserCommand.java:63)
    at org.hsqldb.Session.compileStatement(Session.java:906)
    at org.hsqldb.StatementManager.compile(StatementManager.java:335)
    at org.hsqldb.Session.execute(Session.java:1009)
    at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(JDBCPreparedStatement.java:3882)





My hibernate config file is 

org.hsqldb.jdbcDriver jdbc:hsqldb:file:C:/Users/298637/SAMPLE;hsqldb.lock_file=false org.hibernate.dialect.HSQLDialect sa sa 1 スレッド org.hibernate.cache.NoCacheProvider true なし

マッピングファイルは

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping package="org.mock">
   <class name="IFMAIN" table="IF_MAIN ">
      <meta attribute="class-description">
         This class contains the employee detail. 
      </meta>
      <id name="number" type="string" column="IF_ID">
         <generator class="native"/>
      </id>
      <property name="name" column="IF_NAME" type="string"/>
   </class>
</hibernate-mapping>

ポジョクラス

public class IFMAIN {
    private String number;
    private String name ;
    public IFMAIN()
    {

    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

メインクラス

import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Mainclass {
     private static SessionFactory factory; 
       public static void main(String[] args) {
          try{
             factory = new Configuration().configure().buildSessionFactory();
          }catch (Throwable ex) { 
             System.err.println("Failed to create sessionFactory object." + ex);
             throw new ExceptionInInitializerError(ex); 
          }
          Mainclass ME = new Mainclass();
          ME.listNAMES();
}


public void listNAMES( ){
   Session session = factory.openSession();
   Transaction tx = null;
   try{
      tx = session.beginTransaction();
      List sample = session.createQuery("FROM IFMAIN").list();
      int i=0;
      for (Iterator iterator = sample.iterator(); iterator.hasNext();){
         IFMAIN count = (IFMAIN) iterator.next(); 
         System.out.println("SITE CODE: " + count.getNumber()); 
         System.out.println("SITE DESCRIPTION: " + count.getName());  
      }

      tx.commit();
   }catch (HibernateException e) {
      if (tx!=null) tx.rollback();
      e.printStackTrace(); 
   }finally {
      session.close(); 
   }
}
}

このエラーが発生する理由を誰か教えてください。mysql や oracle 10g などの他のデータベースで試しました。そこに接続して結果を取得できますが、HSQL Db を使用しているときにこのエラーが発生します

4

0 に答える 0