0

我正在开发一个连接到 documentum 的 Java 项目。我正在尝试使用以下命令从我的 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”列中的值时,我得到的只是 null 。知道我的错误在哪里吗?:)

4

2 回答 2

2

您忘记将 DQL 语句设置为查询对象。
添加aclDetailsFetching.setDQL(fetchAclsInfoQuery);

于 2016-09-21T12:43:58.347 回答
0

尝试写作

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>")检查您想要的属性(属性)是否已加载到集合中。

于 2016-09-21T11:39:43.827 回答