java - 无法使用吗啡(mongodb)删除实体

标签 java mongodb bean-validation morphia

每当我尝试使用 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/

相关文章:

JSF 2.0 : How to skip JSR-303 bean validation?

java - 限制 Hibernate 不识别 DDL 生成上的验证注释

Javax Bean验证: @Max and @Min is not working

java - 从android发送数据到网站但没有返回结果

java - 匹配器结果 - 正则表达式

multithreading - 蒙戈 : eliminating race condition on conditional update

node.js - Mongojs & Express - 不能按 id 删除

java - 发现异常后继续执行

java - 最好的做法是始终使用访问器方法,即使是在访问本地状态时也是如此吗?

node.js - MongoDB聚合和项目结果总数