Я пытаюсь отладить метод в Java с помощью NetBeans.
Этот метод:
public Integer getNumberOfClamps(Locations paLocation) {
Integer ret = -1;
List list = new ArrayList();
String removeme = "ABC";
if (paLocation == null) {
return ret;
}
try {
IO io = new IO(this.getSchemaName());
Session session = io.getSession();
String sql = "select count(*) from assets a join assettypes at on (at.id = a.assettype_id) ";
sql += "where a.currentlocation_id = " + paLocation.getId() + " and at.clamp = 1 and at.active = 1;";
list = session.createQuery(sql).list();
// for some reason, list is empty yet MySQL reports 40 records
// and the following two lines are never reached!
ret = list.size();
removeme = "WHAT???";
} catch (Exception ex) {
ret = -1; // explicitly set return
} finally {
return ret;
}
}
К середине метода вы увидите list = session.createQuery(sql).list();
По какой-то причине это возвращает пустой список, хотя, когда SQL запускается вручную, я получаю 40 результатов.
Но странная часть в том, что после вызова .list()
он переходит на блок finally
и никогда не достигает остальных! Таким образом, для тестирования «removeme» должно равняться WHAT???
, но отладчик сообщает об этом как 1011 *.
Что дает?