У меня есть объект (сохраняется на mongodb), называемый SourceCondition с помощью свойства workflowID, и я хочу удалить все объекты SourceCondition с определенным идентификатором workflowID.Hibernate удалить по критериям ошибка
Лицо:
@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();
Я получаю следующее сообщение об ошибке: Синтаксическая ошибка в запросе: [удалить из ком .backend.Models.Source.SourceCondition, где workflowID =: wid]
Я также попытался с:
Query query = s.createQuery("delete SourceCondition where workflowID = :wid");
query.setParameter("wid", "sampleID");
int result = query.executeUpdate();
, но я получаю ту же ошибку.
=====================
EDIT
я обойти проблему с:
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();
}
Это не лучший способ добиться удаления, но он работает в настоящий момент.
Я всегда получаю ошибку синтаксиса в запросе: [удалить из com.backend.Models.Source.SourceCondition СБН где sc.workflowID =: WID]: ( – JackLipari