2015-06-15 3 views
0

У меня есть объект (сохраняется на 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(); 
     } 

Это не лучший способ добиться удаления, но он работает в настоящий момент.

ответ

0

Вы должны дать SourceCondition имя переменной:

delete from SourceCondition sc where sc.workflowID = :wid 
+0

Я всегда получаю ошибку синтаксиса в запросе: [удалить из com.backend.Models.Source.SourceCondition СБН где sc.workflowID =: WID]: ( – JackLipari