解決Spring中使用Example無法查詢到Mongodb中的數據問題


1 問題描述

Spring Boot中使用Mongodb中的Example查詢數據時查詢不到,示例代碼如下:

ExampleMatcher matcher = ExampleMatcher.matching()
.withMatcher("username", ExampleMatcher.GenericPropertyMatchers.exact())
.withIgnorePaths("id","password");

2 問題分析

Spring Data中使用Mongodb時,插入數據會添加一個_class字段,這個字段是用來映射POJO的,也就是說,如果一個實體類如下:

@Document(collection = "user")
class User{
	@Id
	private String id;
	private String username;
	private String password;
}

則存進數據庫的字段如下:

_id,_class,username,password

而使用ExampleMatcher,默認情況下會匹配所有字段,因此,如果實體類的包名改變了,_class字段就不會匹配,這樣就無法正確地得到查詢結果。

3 解決方案

_class添加進IgnorePath即可:

.withIgnorePaths("_class","id","password")

如果不想在插入數據時自動添加_class字段,可以修改MongoTemplate或者MappingMongoConverter,由於此超出本文范圍,僅給出參考鏈接,戳這里這里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM