小编eiv*_*amu的帖子

DFC中的原始SQL(Documentum)

在DFC中,可以使用该IDfSession.apiExec()方法直接执行SQL(绕过DQL).问题是该方法在DFC API的当前(6.x,7.x)版本中被标记为已弃用.

以下是使用弃用方法的一些示例代码:

IDfSession session;
(...)
String sql = "UPDATE dm_sysobject_s SET r_modifier = 'hacker' WHERE r_object_id = '<some_id>'";
session.apiExec("execsql", sql);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但已经提到过apiExec不推荐使用.

我也尝试了另一种方法:

(...)
IDfQuery query = new DfQuery(sql);
query.execute(session, IDfQuery.DF_EXEC_QUERY);
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该有效,但我不断收到以下信息:

[DM_QUERY_E_REG_TABLE_PERMIT_IN]error:  "You have insufficient privilege to UPDATE the dbo.dm_sysobject_s table."
Run Code Online (Sandbox Code Playgroud)

我在使用时收到相同的错误消息IDfQuery.DF_QUERY,但无论如何DF_EXEC_QUERY是应该工作的那个 - 或者?我当然是用超级用户帐户来尝试这个,所以我不知道我缺少哪些权限.

是否有一种好的,不推荐的方式从DFC中执行原始SQL语句?

我还想补充一点,我非常清楚的原始SQL是强烈反对,因为它绕过的Documentum的安全模型.我也知道我可以@SuppressWarnings("deprecation")在我的Java代码中使用,但这并没有使该方法不再被弃用.

java documentum dfc

6
推荐指数
1
解决办法
2637
查看次数

删除死代码会导致错误

我正在使用Eclipse 4.3 Kepler(实际上是STS 3.6.1).

我碰到了一些代码:

private String someMethod(String myParam) {
    try {
        MyInterface myVar = (MyInterface) domeSomething(myParam);
        if (myVar != null) {
            return myVar.methodThatReturnsString();
        }
    } catch (Exception e) {
        return "";
    }
    return ""; // eclipse marks this as dead code
}
Run Code Online (Sandbox Code Playgroud)

(正如您所期望的那样,该doSomething()方法会抛出一些异常,并返回一个比一般更通用的接口MyInterface.)

Eclipse将最后一个return语句强调为死代码,如果我将其删除为quickfix建议,我将使用"此方法应返回String类型的结果"错误.

为什么最后一个return语句是死代码?是因为班级演员吗?假设doSomething()可以返回null,如果你施放它,会抛出一个类强制转换异常吗?

而且,为什么Eclipse建议我用导致死代码警告的错误修复错误?是因为Eclipse无法预测这个吗?

java eclipse dead-code spring-tool-suite eclipse-kepler

1
推荐指数
1
解决办法
258
查看次数