数据库
首页 > 数据库> > 为什么MongoDB Java驱动程序/ Morphia会在属性之前添加两次?

为什么MongoDB Java驱动程序/ Morphia会在属性之前添加两次?

作者:互联网

这是我的(样本)对象.除了Morphia所需的内容之外,我没有添加任何其他注释:

package jungle;

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

和TreeHouse对象:

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

我正在尝试使用正则表达式查询类型.这是我正在使用的MongoDB查询(已被证明可通过命令行运行):

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

我可以使用Query对象中的filter方法在Java中生成此确切的String:

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的加倍.

我使用的是Morphia的0.99版,并且使用的是MongoDB Java驱动程序的2.5版.我做错了什么吗?还是这是新版本中已解决的问题?

解决方法:

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

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

标签:mongodb,morphia,syntax,java
来源: https://codeday.me/bug/20191208/2089114.html