有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我没有看到用@Id注释的字段