Java 休眠按条件删除错误

Java 休眠按条件删除错误,java,hibernate,hql,hibernate-ogm,Java,Hibernate,Hql,Hibernate Ogm,我有一个名为SourceCondition的实体(在mongodb上持久化),其属性为workflowID,我想删除具有特定workflowID的所有SourceCondition对象 该实体为: @Entity @Table(name="source_conditions") public class SourceCondition { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @TableGene

我有一个名为SourceCondition的实体(在mongodb上持久化),其属性为workflowID,我想删除具有特定workflowID的所有SourceCondition对象

该实体为:

@Entity
@Table(name="source_conditions")
public class SourceCondition {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @TableGenerator(
          name = "source_conditions"
       )  
    private ObjectId id;
    public String getId() { return id.toString(); }
    public void setId(ObjectId id) { this.id = id; }   

    @Column(name="workflowID")
    private String workflowID; 

    public SourceCondition() {}

    public String getWorkflowID() {
        return workflowID;
    }
    public void setWorkflowID(String workflowID) {
        this.workflowID = workflowID;
    }
}

我执行的查询是:

        Session s = HibernateUtil.getSessionFactory().openSession();
        Query query = s.createQuery("delete from SourceCondition where workflowID = :wid");
        query.setParameter("wid", "sampleID");           
        int result = query.executeUpdate();
我收到以下错误: 查询中出现语法错误:[从com.backend.Models.Source.SourceCondition中删除,其中workflowID=:wid]

我还尝试了:

        Query query = s.createQuery("delete SourceCondition where workflowID = :wid");
        query.setParameter("wid", "sampleID");           
        int result = query.executeUpdate();
但我收到了同样的错误

=====================

编辑 我用以下方法绕过这个问题:

        Query query1 = s.createQuery("from SourceCondition sc where sc.workflowID = :wid");
        query1.setParameter("wid", "sampleID");     
        List l1 = query1.list();
        Iterator<?> it1 = l1.iterator();
        while (it1.hasNext())
        {
            SourceCondition sc = (SourceCondition) it1.next();
            s.delete(sc);
            s.flush();
        }
queryquery1=s.createQuery(“来自SourceCondition sc,其中sc.workflowID=:wid”);
query1.setParameter(“wid”、“sampleID”);
List l1=query1.List();
迭代器it1=l1.Iterator();
while(it1.hasNext())
{
SourceCondition sc=(SourceCondition)it1.next();
s、 删除(sc);
s、 冲洗();
}

这不是实现删除的最佳方法,但目前它仍能正常工作。

您需要为
SourceCondition
提供一个变量名:

delete from SourceCondition sc where sc.workflowID = :wid

我总是在查询中收到语法错误:[从com.backend.Models.Source.SourceCondition sc删除,其中sc.workflowID=:wid]:(