Jpa CriteriaBuilder equal运算符不起作用
我是JPA的新手。我使用EclipseLink 2.5.2对Oracle数据库使用Oracle JDBC驱动程序。对于下面的简单代码: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
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字段中使用的映射也会有所帮助。