Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa CriteriaBuilder equal运算符不起作用_Jpa_Eclipselink - Fatal编程技术网

Jpa CriteriaBuilder equal运算符不起作用

Jpa CriteriaBuilder equal运算符不起作用,jpa,eclipselink,Jpa,Eclipselink,我是JPA的新手。我使用EclipseLink 2.5.2对Oracle数据库使用Oracle JDBC驱动程序。对于下面的简单代码: public List<DummyGrp> findByProperty(String propertyName, Object value) { CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<DummyGrp> cq = cb

我是JPA的新手。我使用EclipseLink 2.5.2对Oracle数据库使用Oracle JDBC驱动程序。对于下面的简单代码:

public List<DummyGrp> findByProperty(String propertyName, Object value) {
    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery<DummyGrp> cq = cb.createQuery(DummyGrp.class);
    Root<DummyGrp> rootQuery = cq.from(DummyGrp.class);
    cq.select(rootQuery);
    cq.where(cb.equal(rootQuery.get(propertyName),value));
    TypedQuery<DummyGrp> q = entityManager.createQuery(cq);
    return q.getResultList();

}
结果总是空的。启用“调试”后,我确实看到了SQL:

[EL Fine]:sql:2015-01-09 12:20:51.215-ClientSession559179052-Connection1008188683-ThreadThread[main,5,main]-选择ID、数据类型索引、条目类型索引、GRP描述、GRP名称、TRANS\u ORIG\u MM、TRANS\u ORIG\u YR FROM DUMMY\u GRP其中GRP名称=? bind=>[TG_dabfe8]

我调试了OracleJDBC。我能够调试JDBC,这样就可以看到带有bind参数的客户端Oracle语句,如果我直接从IDE运行该语句,就可以得到预期的结果

如果我将equal运算符更改为如下所示: cq.wherecb.likerootQuery.getpropertyName,值+%

我得到了结果

我相信我可能错过了一些简单的东西。谁能启发我

提前感谢,

彼得C。 顺便说一下,以下是Oracle JDBC Diagnostics日志:

配置:5E158F33 SQL:选择ID、数据类型索引、条目类型索引、GRP描述、GRP名称、TRANS\u ORIG\u MM、TRANS\u ORIG\u YR FROM DUMMY\u GRP,其中GRP\u名称=? java.lang.Throwable:无错误 位于oracle.jdbc.driver.OracleStatement.doExecuteWithTimeoutOracleStatement.java:1647 位于oracle.jdbc.driver.OraclePreparedStatement.executeInternalOraclePreparedStatement.java:4401 位于oracle.jdbc.driver.OraclePreparedStatement.executeQueryOraclePreparedStatement.java:4482 位于oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQueryOraclePreparedStatementWrapper.java:6272 位于org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelectDatabaseAccessor.java:1007 位于org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCallDatabaseAccessor.java:642 位于org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCallDatabaseAccessor.java:558 位于org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCallAbstractSession.java:2002 位于org.eclipse.persistence.sessions.server.ClientSession.executeCallClientSession.java:298 位于org.eclipse.persistence.internal.querys.DatasourceCallQueryMechanism.executeCallDatasourceCallQueryMechanism.java:242 位于org.eclipse.persistence.internal.querys.DatasourceCallQueryMechanism.executeCallDatasourceCallQueryMechanism.java:228 位于org.eclipse.persistence.internal.querys.DatasourceCallQueryMechanism.executeSelectCallDatasourceCallQueryMechanism.java:299 在org.eclipse.persistence.internal.querys.DatasourceCallQueryMechanism.SelectAllRowsDatasourceCellQueryMechanism.java:694 在org.eclipse.persistence.internal.querys.ExpressionQueryMechanism.java:2738上选择AllRowsFromTableExpressionQueryMechanism.java 在org.eclipse.persistence.internal.querys.ExpressionQueryMechanism.selectAllRowsExpressionQueryMechanism.java:2691 位于org.eclipse.persistence.querys.ReadAllQuery.executeObjectLevelReadQueryReadAllQuery.java:495 位于org.eclipse.persistence.querys.ObjectLevelReadQuery.executeDatabaseQueryObjectLevelReadQuery.java:1168 位于org.eclipse.persistence.querys.DatabaseQuery.executeDatabaseQuery.java:899 位于org.eclipse.persistence.querys.ObjectLevelReadQuery.executeObjectLevelReadQuery.java:1127 位于org.eclipse.persistence.querys.ReadAllQuery.executeReadAllQuery.java:403 位于org.eclipse.persistence.querys.ObjectLevelReadQuery.executeInUnitOfWorkObjectLevelReadQuery.java:1215 位于org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQueryUnitOfWorkImpl.java:2896 位于org.eclipse.persistence.internal.sessions.AbstractSession.executeQueryAbstractSession.java:1804 位于org.eclipse.persistence.internal.sessions.AbstractSession.executeQueryAbstractSession.java:1786 位于org.eclipse.persistence.internal.sessions.AbstractSession.executeQueryAbstractSession.java:1751 位于org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQueryQueryImpl.java:258 位于org.eclipse.persistence.internal.jpa.QueryImpl.getResultListQueryImpl.java:469 在com.gaig.plentry.dao.DummyGroupDAOImpl.findByPropertyDummyGroupDAOImpl.java:47 位于com.gaig.plentry.dao.DummyGroupDAOImpl.findByGroupNameDummyGroupDAOImpl.java:28 在com.gaig.plentry.dao.DummyGroupDAOImpl$$FastClassBySpringCGLIB$$2d2bc23e.invoke 位于org.springframework.cglib.proxy.MethodProxy.invokeMethodProxy.java:204 位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpointCglibAopProxy.java:717 位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:157 位于org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocationTransactionInterceptor.java:99 位于org.springframework.transaction.interceptor.TransactionSpectSupport.invokewithIntransactionTransactionSpectSupport.java:267 位于org.springframework.transaction.interceptor.TransactionInterceptor。 invokeTransactionInterceptor.java:96 位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceedReflectiveMethodInvocation.java:179
在org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.interceptCglibAopProxy.java:653

中,值是什么java类型?GRP_NAME字段中使用的映射也会有所帮助。