0

IN 句に文字列配列を追加する必要があります。

私の休止状態のクエリは次のようになります。

                Query q = 
                    session.createQuery("from CsePrcsngGroup where CSE_SID=? and CSE_GROUP IN(:cseGrpLists)");
                q.setParameter(0, cseSid);
                q.setParameterList("cseGrpLists", cseGrpLists);
                return q.list();

ここで、CsePrcsngGroup はエンティティ クラスです。CSE_SID と CSE_GROUP はフィールド名で、cseGrpLists は文字列配列です。

実行時にこの例外が発生します。

Caused by: java.sql.SQLException: ORA-00942: table or view does not exist

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:138)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
    at oracle.jdbc.driver.T4CPreparedStatement.execute_for_describe(T4CPreparedStatement.java:503)
    at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:1029)
    at oracle.jdbc.driver.T4CPreparedStatement.execute_maybe_describe(T4CPreparedStatement.java:535)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1126)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3001)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3043)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1849)
    at org.hibernate.loader.Loader.doQuery(Loader.java:718)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
    at org.hibernate.loader.Loader.doList(Loader.java:2294)
    ... 55 more

Wrapped exception:
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:2297)

助言がありますか?DB列名の代わりにエンティティ名を使用しようとしましたが、同じエラーが発生しました.原因: java.sql.SQLException: ORA-00942: テーブルまたはビューが存在しません

4

1 に答える 1

0

クエリでは、列名の代わりにプロパティ名を使用してください。

Query q = session.createQuery("from CsePrcsngGroup where property1=? and property2 IN(:cseGrpLists)");

'CSE_SID'代わりに、この列にマップされた彼のプロパティ名を使用するように(ex: id)

于 2013-04-08T12:08:53.993 に答える