0

Sybase Anywhere 12でHibernateを使用していますが、を使用したビューでのクエリで問題が発生しますSQLQuery

SQLQuery query = session.createSQLQuery(" SELECT * FROM myview WHERE x = :x AND y IN (:y) ");
query.setParameter("x", "z1234");
query.setParameterList("y", Arrays.asList(1, 2, 3, 4));
query.setReadOnly(true);
query.addEntity(ClassX.class);
List result = query.list();

データベースを再起動した後、クエリは1回だけ失敗します。同じパラメータを使用して同じクエリを2回実行すると、スムーズに実行されます。

ビューはテーブルに基づいており、別のビューは2つのテーブルに基づいています。これらのテーブルにはトリガーがあります。Connection#prepareStatement(...)これが問題の原因である可能性がある場合に備えて、発生した場所までデバッグしたので、意味がありませんSQLException

Caused by: java.sql.SQLException: [Sybase][JDBC Driver][SQL Anywhere]Not enough values for host variables
        at sybase.jdbc4.sqlanywhere.IConnection.nativePrepareStatement(Native Method) ~[sajdbc4.jar:na]
        at sybase.jdbc4.sqlanywhere.IConnection.prepareStatement(IConnection.java:599) ~[sajdbc4.jar:na]
        at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_09]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_09]
        at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:125) ~[com.springsource.org.apache.tomcat.jdbc-1.1.0.1.jar:na]
        at $Proxy104.prepareStatement(Unknown Source) ~[na:na]
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534) ~[hibernate-core-3.6.9.Final.jar:3.6.9.Final]

何か案は?


10:16:33.851 WARN  [http-9443-2] org.hibernate.util.JDBCExceptionReporter.logExceptions[233] - SQL Error: -188, SQLState: 07002
10:16:33.851 ERROR [http-9443-2] org.hibernate.util.JDBCExceptionReporter.logExceptions[234] - [Sybase][JDBC Driver][SQL Anywhere]Nicht genügend Werte für Hostvariablen

参照:Sybase Docs

4

1 に答える 1

0

問題の原因を見つけたと思います。myviewSybase Central に警告記号がありました。myview削除されて再作成された別のビューに基づいています。したがって、myview再コンパイルが必要です。

ただし、スローされた の SQL コードSQLExceptionは間違っており、問題の原因を見つけて間違った方向に進みます。Connection#prepareStatement(sqlQuery)パラメータを渡しません。

于 2013-01-07T13:40:10.807 に答える