在编写QueryDSL的谓词时,无法与二级ObjectId匹配(MongoDb,Spring)

时间:2016-10-28 12:15:14

标签: spring mongodb predicate querydsl

success: function(response) {

以上JSON格式是我的Mongo DB中的BSON文档。 我用以下代码创建了一个谓词

Employee: {
"id": "5812f53ff32eaf1b86e30794"
"firstName": "sham"
"lastName": "saha"
"age": 23
"position": "developer"
"projects": [
{
"id": "5812f53ff32eaf1b86e30792"
"name": "pms"
"description": "Product Managemsadfasent System"
},
{
"id": "5812f53ff32eaf1b86e30793"
"name": "lms"
"description": "Learning Management System"
}
]
}

QEmployee qEmployee = QEmployee.employee;
Predicate predicate = qEmployee.projects.any().id.eq("5812f53ff32eaf1b86e30792");

不会返回任何东西。除了Id It(名称和描述)之外还有效。只有对象ID它不是wotking。

任何帮助都很明显。谢谢!!!

1 个答案:

答案 0 :(得分:1)

我还遇到了这个问题并通过将实体中的数据类型从String更改为ObjectId来修复它。所以Empl.id和Proj.id必须是org.bson.types.ObjectId的类型,以便你可以创建qEmployee.projects.any()。id.eq(new ObjectId(" 5812f53ff32eaf1b86e30792"));