我在使用hibernate和Oracle db执行Criteria with Restriction标准时遇到问题。
简化标准是:
criteria1.add(Restrictions.sqlRestriction("{pets}.givenName = 'Wayne')"));
这给了我NullPointerExceltion。我知道我需要设置setEscapeProcessing(false)才能忽略括号' {}'在{pets},但我不知道该怎么做,因为我正在使用Criteria。
如果有人可以帮助我,我会很高兴。
这是生成的例外:
1 ERROR http-8080-2 lists.SimplePagingList - Could not load current list
显示java.lang.NullPointerException at oracle.jdbc.driver.T4C8Oall.getNumRows(T4C8Oall.java:876) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:831) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3384) at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93) 在org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) 在org.hibernate.loader.Loader.getResultSet(Loader.java:1787) 在org.hibernate.loader.Loader.doQuery(Loader.java:674) 在org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) 在org.hibernate.loader.Loader.doList(Loader.java:2213) 在org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) 在org.hibernate.loader.Loader.list(Loader.java:2099) 在org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) 在org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) 在org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
答案 0 :(得分:0)
我设法解决了这个问题。
第一个问题是{pets}我只需使用{alias}。
第二个问题是我正在创建标准:
Criteria criteria1 = criteriaOrg.**createAlias**(...)
我已将其更改为:
Criteria criteria1 = criteriaOrg.**createCriteria**(...)