Почему отладчик Java NetBeans никогда не достигает этого кода? - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь отладить метод в 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 *.

Что дает?

1 Ответ

1 голос
/ 19 января 2012

Вы используете неправильный метод. createQuery ожидает синтаксис HQL. Измените ваш метод на «createSQLQuery»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...