我在pojo中有一個簡單的布爾字段,我將它存儲在gemfire區域中。 pojo還包括具有不同數據類型的其他字段(例如String
,Long
,Short
,Date
等)。我已經爲每個字段寫了一個區域查詢,除了布爾字段外,它們都返回了很好的狀態。從我的實體實例存根:Spring-data-gemfire布爾查詢只適用於PDX序列化?
@Region("poc")
public class POCEntity {
@Id
@javax.persistence.Id
private String id;
private Boolean active;
private String internalUsername;
private Long dob;
private Date createDate, updateDate;
...
這裏是倉庫存根:
//@Query("SELECT * FROM /poc p where p.active = false")
List<WellnessOptInEntity> findByActiveIsFalse();
我已經試過各種可能的變化(與手動查詢與和查詢生成),我可以找到,但查詢布爾型字段與PDX NOT配置總是導致此異常:
java.lang.IllegalArgumentException:不支持的運算符TRUE! at org.springframework.data.gemfire.repository.query.Predicates $ AtomicPredicate.getOperator(Predicates.java:174) at org.springframework.data.gemfire.repository.query.Predicates $ AtomicPredicate.toClause(Predicates.java: 137) at org.springframework.data.gemfire.repository.query.Predicates $ AtomicPredicate.toString(Predicates.java:126) at org.springframework.data.gemfire.repository.query.Predicates.toString(Predicates.java: 90) 在org.springframework.data.gemfire.repository.query.QueryBuilder.create(QueryBuilder.java:44)
如果我能PDX,爲布爾領域的查詢工作正常。如果未啓用PDX(例如,使用引導的gemfire服務器進行單元測試),則布爾查詢不起作用。
有沒有人遇到過這樣的事情?我正在使用gemfire 7.0.1和spring-data-gemfire 1.3.3。我認爲這可能是spring-data-gemfire中的一個錯誤,但是想把它放在那裏就是確定的。
只是爲了與hubbardr這方面的工作加點的詳細信息,具體如下似乎是問題。在org.springframework.data.gemfire.repository.query.Predicates中有一個私有方法getOperator,它接受一個參數類型:org.springframework.data.repository.query.parser.Part.Type。這種類型不正確。對於來自Property的類有一個公共靜態方法,它獲取傳入的參數ActiveIsFalse,並將其類型設置爲FALSE,因此我們得到一個「active FALSE」類型,該類型對getOperator中的switch語句無效 – fpmoles