繁体   English   中英

Spring 数据 Mongodb 按嵌入文档 id 查询

[英]Spring Data Mongodb Query by embedded document id

我正在尝试查询包含@Reference 作为属性的 model,例如:

public class TaskGroups {

    @Reference
    Branch branch;
 
.
.
.

}

依此类推,然后我有一个包含更多逻辑和代码的查询,但在简历中,我必须按分支 object 中的字段 _id 进行过滤,它在 object 上只是 id,但在数据库上它的 _id,没问题,它对于框架的正常行为.

好的,现在不起作用的代码:


public class TaskGroupRepositoryImpl implements TaskGroupCustomRepository {

    private final MongoTemplate mongoTemplate;

    @Autowired
    public TaskGroupRepositoryImpl(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    @Override
    public List<TaskGroup> query(TaskGroupDynamicQuery queryObject) {
        Query query = new Query();
        final List<Criteria> criterias = new ArrayList<>();

        criterias.add(Criteria.where("deleted").is(false));

        if (queryObject.getBranchId() != null) {
            criterias.add(Criteria.where("branch._id").is(new ObjectId(queryObject.getBranchId())));
        }

.
.
.
}

因此,当代码运行时,查询会将“branch._id”字段更改为仅分支。 然后没有记录返回...

有了这种行为,我需要做一个解决方法,将结果映射到 Object,然后转换为任务组 class,然后查询对属性名称没有修改,并且过滤器不会出现问题。

这是一个错误吗? 还是它的正常行为? 是否有任何解决方法可以避免在 id 字段时更改此属性名称?

附件。

尝试使用类似 branch.$id 的东西

Criteria.where("branch" + "." + "$" + "id")

对于每个遇到这个问题的人,我都在这里回应说没有解决方案,在官方存储库上,维护人员与我交谈,这被冻结了,要解决它,我需要使用@DbRef,但是出于性能原因,大多数时候这不是一个可行的解决方案。

他们说将来有可能,因为他们正在努力增强 api 但今天没有办法做到这一点。

增强问题是: 增强问题

供参考的基本问题: 基本问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM