2017-12-18 104 views
0

我有一個名爲Person.class的類,我有一個稱爲性的枚舉。mongodb編解碼器註冊表錯誤,而試圖插入Java枚舉

public enum Sex{ 
    Male,Female 
} 

而我有一個變量來把這個枚舉值。

private Sex sex = Sex.Male; 

public Sex getSex() { 
    return sex; 
} 

public void setSex(Sex sex) { 
    this.sex = sex; 
} 

其插入,但是當我嘗試更新或找回它拋出這個錯誤被稱爲

Exception in thread "main" org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class in.co.precisionit.pivot.database.model.Person$Sex. 
    at org.bson.codecs.configuration.CodecCache.getOrThrow(CodecCache.java:46) 
    at org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:63) 
    at org.bson.codecs.configuration.ProvidersCodecRegistry.get(ProvidersCodecRegistry.java:37) 

更新查詢:

collection.updateOne(eq("employeeList.user", employeeReference),set("user.$.sex", sex)).getModifiedCount(); 

的檢索查詢:

Aggregates.unwind("$user"); 
Aggregates.match(eq("user.sex", sex)); 
Aggregates.group("$_id", Accumulators.push("user", "$user")); 
collection.aggregate(Arrays.asList(unwind, match, group)).first().getUser(); 

plz some幫幫我。

回答

0

今天我也遇到了這個。 這似乎是3.6.0驅動程序中的一個錯誤。有一個新版本(3.6.1),似乎沒有這個問題。

+0

感謝您的回覆。我沒有看到一個叫3.6.1的更新版本。 –

+0

http://mongodb.github.io/mongo-java-driver/在他們的首頁上列出它。 另外它可以通過maven中心。 – GTFK

+0

它在更新和檢索枚舉時似乎不起作用。我更新了我的問題 –