2014-11-22 1 views
0

Привет, я новичок openbravo. Я хотел бы узнать о возвращаемом объекте из набора результатов запроса HQL. Обычно я мог возвращать список или строку. Когда я пытаюсь вернуть Object, он показывает ошибку, например, не может передать объект в строку.Как вернуть объект с помощью набора результатов запроса HQL в Openbravo

Вот мой объект: ShipmentInOut

private ShipmentInOut getShipment(String documentNo) { 
    String query = "select id from MaterialMgmtShipmentInOut where documentNo='" + documentNo 
      + "' and salesTransaction='Y'"; 
     Query resultset = OBDal.getInstance().getSession().createQuery(query); 

     List<ShipmentInOut> shpmntCritList = resultset.list(); 


     if (shpmntCritList != null && shpmntCritList.size() > 0) { 
      return shpmntCritList.get(0); 
     } else { 
      throw new OBException("shipment " + documentNo + " not found"); 
     } 
} 

В приведенном выше даного я получил исключение, поэтому я решил сделать критерии запроса и я написал Критерии equalent запроса выше HQL запрос, но несчастливо, если условие второй части возвращается 0 как результат. Но я не знаю, почему я получаю разные результаты в одном и том же запросе. Вышеупомянутый запрос HQL правильно входит в условие if. но проблема заключается в кастинге.

private ShipmentInOut getShipment(String documentNo) { 

    log.info() 
    OBCriteria<ShipmentInOut> shpmntCrit = OBDal.getInstance().createCriteria(ShipmentInOut.class); 
    shpmntCrit.add(Restrictions.eq(ShipmentInOut.PROPERTY_DOCUMENTNO, documentNo)); 
    shpmntCrit.add(Restrictions.eq(ShipmentInOut.PROPERTY_SALESTRANSACTION, true)); 


    List<ShipmentInOut> shpmntCritList = shpmntCrit.list(); 
    if (shpmntCritList != null && shpmntCritList.size() > 0) { 
     return shpmntCritList.get(0); 
    } else { 
     throw new OBException("shipment " + documentNo + " not found"); 
    } 
    } 

Пожалуйста, помогите мне. Я хотел бы реализовать любой из вышеперечисленных методов. Заранее спасибо

+0

Вы не указали сопоставления классов – carbontax

+0

HQL должен обязательно вернуть вам объект. и в какой строке вы получаете ошибку? –

ответ

0

В какой строке вы получаете ошибку?

попробовать это

//log.info() 
OBCriteria<ShipmentInOut> shpmntCrit = OBDal.getInstance().createCriteria(ShipmentInOut.class); 
shpmntCrit.add(Restrictions.eq(ShipmentInOut.PROPERTY_DOCUMENTNO, documentNo)); 
shpmntCrit.add(Restrictions.eq(ShipmentInOut.PROPERTY_SALESTRANSACTION, true)); 

if (shpmntCrit.list().size() > 0) 
    return shpmntCrit.list().get(0); 
else 
    throw new OBException("shipment " + documentNo + " not found"); 
0

Большое спасибо за ваш ответ. Наконец, я получил решение от собственного

String query = "from MaterialMgmtShipmentInOut where documentNo='" + documentNo 
     + "' and salesTransaction='Y'"; 
    Query resultset = OBDal.getInstance().getSession().createQuery(query); 
    List<ShipmentInOut> resultlist = new ArrayList<ShipmentInOut>(resultset.list()); 
    if (resultset.list().size() > 0) { 
     return resultlist.get(0); 
    } else { 
     throw new OBException("shipment " + documentNo + " not found"); 
    } 
Смежные вопросы