我有一个(Morphia)实体,它嵌入了另一个实体:
@Entity(value = "connection", noClassnameStored = false)
public class ConnectorEntity {
@Embedded
private List<UnavailabilityEntity> unavailabilities = new ArrayList<>();
嵌入式实体:
@Embedded
public class UnavailabilityEntity implements Serializable {
private Date start = new Date();
// Do not use a null value as Morphia (as of 0.99.1) cannot handle this on embedded lists
private Date end = new Date(0);
添加不可用性可以正常工作。因此,列出了不可用的实体,如果某些内容当前不可用,则其中一个实体有end = new Date(0)
。
一旦连接器再次可用,我想&#34;关闭&#34;设置end = new Date()
时无法使用。
以下查询在MongoDB 2.4中正常工作,但在2.6中没有工作,如果我想添加第二个不可用(添加和关闭一个工作正常):
@Override
public void addAvailability(final String connectionUuid) {
Query<ConnectorEntity> query = mongoDataStore.find(ConnectorEntity.class)
.field("uuid").equal(connectionUuid)
.field("unavailabilities.start").exists()
.field("unavailabilities.end").hasThisOne(new Date(0));
// If there is an open unavailability - close it
if (query.get() != null) {
UpdateOperations<ConnectorEntity> update = mongoDataStore
.createUpdateOperations(ConnectorEntity.class).disableValidation()
.set("unavailabilities.$.end", new Date());
mongoDataStore.update(query, update);
}
}
所以我假设位置运算符$
没有应用于正确的不可用性。 MongoDB中的某些内容是否发生了变化,我不知道?