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

时间:2011-07-26 17:43:30

标签: java mongodb syntax morphia

这是我的(样本)对象。除了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"}})

我可以使用filter对象中的Query方法在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版本,并使用版本2.5的MongoDB Java驱动程序。我没有做正确的事吗?或者这是一个在较新版本中修复过的问题吗?

1 个答案:

答案 0 :(得分:3)

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

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