每当我尝试使用 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
方法按预期工作,所以我真的不知道为什么会发生这种情况。
有什么想法吗?
最佳答案
我没有看到用 @Id
注释的字段...
关于java - 无法使用吗啡(mongodb)删除实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47052689/