Morphia-HasAnyOf
Morphia - HasAnyOf
Morphia 的 HasAnyOf 功能似乎不起作用或我做错了什么。
数据已正确保存在数据库中。
我将 Morphia 1.0.1 与 MongoDB/Drive 3.0.1
一起使用
下面是我的class映射和查询:
//freight
@Entity(value="freight", noClassnameStored = true)
public class Freight extends BaseEntity {
@Embedded
protected List<Vehicle> vehicles;
//vehicle
@Entity(value="vehicle", noClassnameStored = true)
public class Vehicle extends BaseEntity{...
//Query
Query<Freight> query = getDatastore().createQuery(Freight.class);
query.disableValidation();
if(vo.getVehicles() != null && !vo.getVehicles().isEmpty()){
query.field("vehicles").hasAnyOf(vo.getVehicles());
}
return query.asList();
欢迎提出任何建议。
谢谢!
这应该有效——我们正在使用相同版本的 .hasAnyOf()
成功。
您或许应该将车辆实体更改为
//vehicle
@Embedded
public class Vehicle {...
由于您要嵌入它,因此它不是一个(独立的)实体。我不确定 BaseEntity
做了什么,但如果它添加了 ObjectId、时间戳,... — 这对于嵌入式实体来说不是必需的,因为所有信息都已经在货运中了。
我意识到 class Vehicle 应该被引用而不是嵌入,然后我更改了映射并尝试使用 hasAnyOf 但它没有用。
我找到了解决这个 post Using the $in operator through Morphia - doing it wrong? 的方法,它工作正常,但不是一个优雅的解决方案。
很高兴知道 hasAnyOf 适用于嵌入式对象。
谢谢!
Morphia 的 HasAnyOf 功能似乎不起作用或我做错了什么。
数据已正确保存在数据库中。 我将 Morphia 1.0.1 与 MongoDB/Drive 3.0.1
一起使用下面是我的class映射和查询:
//freight
@Entity(value="freight", noClassnameStored = true)
public class Freight extends BaseEntity {
@Embedded
protected List<Vehicle> vehicles;
//vehicle
@Entity(value="vehicle", noClassnameStored = true)
public class Vehicle extends BaseEntity{...
//Query
Query<Freight> query = getDatastore().createQuery(Freight.class);
query.disableValidation();
if(vo.getVehicles() != null && !vo.getVehicles().isEmpty()){
query.field("vehicles").hasAnyOf(vo.getVehicles());
}
return query.asList();
欢迎提出任何建议。
谢谢!
这应该有效——我们正在使用相同版本的 .hasAnyOf()
成功。
您或许应该将车辆实体更改为
//vehicle
@Embedded
public class Vehicle {...
由于您要嵌入它,因此它不是一个(独立的)实体。我不确定 BaseEntity
做了什么,但如果它添加了 ObjectId、时间戳,... — 这对于嵌入式实体来说不是必需的,因为所有信息都已经在货运中了。
我意识到 class Vehicle 应该被引用而不是嵌入,然后我更改了映射并尝试使用 hasAnyOf 但它没有用。
我找到了解决这个 post Using the $in operator through Morphia - doing it wrong? 的方法,它工作正常,但不是一个优雅的解决方案。
很高兴知道 hasAnyOf 适用于嵌入式对象。
谢谢!