gpt4 book ai didi

java - 为什么 MongoDB Java 驱动程序/Morphia 两次预先设置一个属性?

转载 作者:可可西里 更新时间:2023-11-01 09:37:51 26 4
gpt4 key购买 nike

这是我的(示例)对象。除了 Morphia 所需的注释外,我没有添加任何其他注释:

package jungle;

@Entity
public class Monkey {
String name;
int bananas;
@Embedded
TreeHouse house;
}

TreeHouse 对象:

@Embedded
public class TreeHouse {
String type;
int distanceFromWater;
}

我正在尝试使用正则表达式查询 type。这是我正在使用的 MongoDB 查询(并且已被证明可以通过命令行运行):

db.Monkey.find({ "house.type": { "$regex" : ".*coco.*", "$options": "i"}})

我能够使用 Query 对象的 filter 方法在 Java 中生成这个确切的字符串:

Query query = ...;
query = query.filter("house.type",
Pattern.compile(".*coco.*", Pattern.CASE_INSENSITIVE));

但是,当我尝试在 Java 中运行搜索时,我得到了一个 ValidationException:

com.google.code.morphia.query.ValidationException: The field 'house' could not be
found in 'jungle.Monkey' while validating - house.house.type; if you wish to
continue please disable validation.

请注意 house.house.type 的加倍。

我使用的是 0.99 版的 Morphia,以及 2.5 版的 MongoDB Java 驱动程序。我做错了什么吗?或者这是一个已在较新版本中修复的问题?

最佳答案

试试这个技巧,它对我有用:

query = query.disableValidation().filter("house.type", 
Pattern.compile(".*coco.*", Pattern.CASE_INSENSITIVE));

关于java - 为什么 MongoDB Java 驱动程序/Morphia 两次预先设置一个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6834202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com