簡體   English   中英

Vapain Combobox過濾問題與jpacontainer datasouce

[英]Vaadin Combobox filtering issue with jpacontainer datasouce

誰能幫我解決這個棘手的問題,我已經將jpacontainer設置為vaadin組合框的數據源,並且還為其設置了過濾模式,但是過濾不起作用,並且這里拋出異常。

碼:

JPAContainer<PersonMaster> personMasterContainer = new JPAContainer<>(PersonMaster.class);
personMasterContainer.setEntityProvider(dataService.getPersonMasterService());

ComboBox createEntitySelect = new ComboBox("Entity",personMasterContainer);
createEntitySelect.setContainerDataSource(personMasterContainer);
createEntitySelect.setItemCaptionPropertyId("personName");
createEntitySelect.setFilteringMode(ComboBox.FILTERINGMODE_CONTAINS);
createEntitySelect.setImmediate(true);

異常stacktrace:

SEVERE: EjbTransactionUtil.handleSystemException: The filter listener "matches" requires a constant argument.
<openjpa-2.4.0-r422266:1674604 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: The filter listener "matches"requires a constant argument.     
at org.apache.openjpa.jdbc.kernel.exps.JDBCExpressionFactory.matches(JDBCExpressionFactory.java:276)
at org.apache.openjpa.persistence.criteria.Expressions$Like.toKernelExpression(Expressions.java:1265)
at org.apache.openjpa.persistence.criteria.PredicateImpl.toKernelExpression(PredicateImpl.java:166)
at org.apache.openjpa.persistence.criteria.CriteriaExpressionBuilder.evalFilter(CriteriaExpressionBuilder.java:215)
at org.apache.openjpa.persistence.criteria.CriteriaExpressionBuilder.getQueryExpressions(CriteriaExpressionBuilder.java:75)
at org.apache.openjpa.persistence.criteria.CriteriaQueryImpl.getQueryExpressions(CriteriaQueryImpl.java:423)
at org.apache.openjpa.persistence.criteria.CriteriaBuilderImpl.eval(CriteriaBuilderImpl.java:81)
at org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.<init>(ExpressionStoreQuery.java:763)
at org.apache.openjpa.kernel.ExpressionStoreQuery.newDataStoreExecutor(ExpressionStoreQuery.java:179)
at org.apache.openjpa.kernel.QueryImpl.createExecutor(QueryImpl.java:748)
at org.apache.openjpa.kernel.QueryImpl.compileForDataStore(QueryImpl.java:706)
at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:688)
at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1528)
at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:123)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:268)
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:290)
at org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:318)
at com.vaadin.addon.jpacontainer.provider.LocalEntityProvider.doGetEntityCount(LocalEntityProvider.java:543)
at com.vaadin.addon.jpacontainer.provider.LocalEntityProvider.getEntityCount(LocalEntityProvider.java:547)
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)

錯誤

過濾器偵聽器“匹配”需要一個常量參數

當您嘗試使用類似cb.lower(value)的表達式作為第二個參數進行類似操作時,在openjpa中給出。 您可以一起省略下級運算符,因為

MySQL DB-'like'運算符不區分大小寫

因此您可以編寫類似以下行的內容:

Predicate condition = cb.like(cb.lower(field), "%" + value+ "%");

它應該可以按預期工作。

有助於我找到根本原因的資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM