Restrictions.sqlRestriction exception Hibernate with Oracle



我使用休眠和 Oracle db 执行带有限制条件的条件时出现问题。

简化的标准是: 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) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.doList(Loader.java:2213) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)

我设法解决了这个问题。

第一个问题是,我不得不只使用{别名},而不是{宠物}。

第二个问题是我正在创建标准:

Criteria criteria1 = criteriaOrg.**createAlias**(...)

我已将其更改为:

Criteria criteria1 = criteriaOrg.**createCriteria**(...)

最新更新