2014-01-14 31 views
0

我在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.1spring-data-gemfire 1.3.3。我認爲這可能是spring-data-gemfire中的一個錯誤,但是想把它放在那裏就是確定的。

+1

只是爲了與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

回答