полученные данные из documentum (таблица объектов dm_acl) оказываются нулевыми? Зачем?

Я работаю над проектом Java, который связан с documentum. Я пытаюсь получить некоторые данные из моей таблицы объектов dm_acl, используя следующее:

String fetchAclsInfoQuery = "select * from dm_acl where description = '@aclname0' or description = '@aclname1' or description = '@aclname2' enable (ROW_BASED) ";
            fetchAclsInfoQuery = fetchAclsInfoQuery.replace("@aclname0", list.get(0));
            fetchAclsInfoQuery = fetchAclsInfoQuery.replace("@aclname1", newAcl1.toString().toLowerCase());
            fetchAclsInfoQuery = fetchAclsInfoQuery.replace("@aclname2", newAcl2.toString().toLowerCase());
            System.out.println(fetchAclsInfoQuery);

//The problem starts from here  ==> 
            IDfQuery aclDetailsFetching = new DfQuery();
            //IDfCollection col = UpdateQuery.execute(_session, IDfQuery.DF_QUERY);
            IDfCollection details = aclDetailsFetching.execute(_session, DfQuery.DF_READ_QUERY);
            while(details.next()){
                System.out.println(details.getString("owner_name"));
            }

как только я распечатываю результаты «fetchAclsInfoQuery» и запускаю их в тестере DQL, он отлично работает, однако, когда я пытаюсь вывести значения, хранящиеся в столбце «owner_name», все, что я получаю, равно нулю. Любая идея, где моя ошибка? :)


person Danial Kosarifa    schedule 21.09.2016    source источник


Ответы (2)


Вы забыли установить оператор DQL для запроса объекта.
добавить aclDetailsFetching.setDQL(fetchAclsInfoQuery);

person Sergi    schedule 21.09.2016

Попробуйте написать

String fetchAclsInfoQuery = "select owner_name from dm_acl where description = '@aclname0' or description = '@aclname1' or description = '@aclname2' enable (ROW_BASED) ";

вместо

String fetchAclsInfoQuery = "select * from dm_acl where description = '@aclname0' or description = '@aclname1' or description = '@aclname2' enable (ROW_BASED) ";

Я совершенно уверен, что есть проблема со звездочкой вместо реального имени собственности. Вы можете использовать метод hasAttr("<attribute_name>"), чтобы проверить, загружено ли желаемое свойство (атрибут) в коллекцию.

person Miki    schedule 21.09.2016
comment
Они оба работают хорошо. Просто из любопытства, почему вы думаете, что мне нужно указывать имена столбцов? ;) - person Danial Kosarifa; 22.09.2016
comment
Поскольку со звездочкой вы не указываете свойство, может случиться так, что он не все из вашей коллекции поместит в ВМ. - person Miki; 22.09.2016