java无法使用morphia(mongodb)删除实体
每当我尝试使用Morphia删除实体时,都会出现相同的错误:
org.mongodb.morphia.query.ValidationException: The field '_id' could not be found in ...
while validating - _id; if you wish to continue please disable validation.
我真的不想禁用验证。我只想删除这个对象
以下是我正在编写的服务的删除方法:
public void delete(ObjectId id) {
BaseMaterial baseMaterial = this.findOne(id);
WriteResult writeResult = this.repo.delete(baseMaterial);
}
这里是同一服务中的findOne
方法(即this.findOne
)
public BaseMaterial findOne(ObjectId id) {
Query<BaseMaterial> query = repo.createQuery(BaseMaterial.class);
return Optional.ofNullable(query.field("id").equal(id).get())
.orElseThrow(() -> new DataRetrievalFailureException(
"Failed to fetch " + this.getClass().getName() + " with id " + id.toString()));
}
这是我的POJO:
@Entity("baseMaterial")
public class BaseMaterial {
@Id
@NotNull
protected ObjectId id;
@NotEmpty
private String name;
private String description;
public String get_id() {
return this.id.toString();
}
@JsonIgnore
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
上面所示的findOne
方法工作正常,所以我真的不知道为什么会发生这种情况
有什么想法吗
# 1 楼答案
我没有看到用
@Id
注释的字段