0

私はこのようなDAOを持っています、

public String getCaseTypeById(String caseIdNumber) {
        String caseType = null;

        SqlQuery caseQuery = 
            new PQuery(getDataSource());
        System.out.println("caseIdNumber   --"+caseIdNumber);
        caseType = (String)caseQuery.findObject(caseIdNumber);
        System.out.println("before return");

        return caseType;
    }

そしてpQueryは、

public PlanQuery(DataSource dataSource)
{
    super();
    setDataSource(dataSource);
    BQueries bQueries = new BQueries();

    setSql(bQueries.getSelectStandardCaseTypeQuery());
    declareParameter(new SqlParameter("caseIdNumber",
            Types.NUMERIC));
    compile();
}

getSelectStandardCaseTypeQuery は、

public String getSelectStandardCaseTypeQuery() {

String selectCaseTypeByCaseId = null;

        selectCaseTypeByCaseId = 
            " SELECT ct.C_CODE as c_code " + 
            "  FROM  " + getSchemaName() + ".csummary cs, " + 
                getSchemaName() + ".ctype ct " +
            "   WHERE cs.c_number = ? " + 
            "   AND UPPER(ct.C_DESC_TEXT) = UPPER(cs.C_TYPE) ";

    return selectCaseTypeByCaseId;
}

これで、上記の戻り値が正常に機能します。コントロールはDAOに戻り、DAOではsysoutが出力されますが、その後、次のように例外が発生します。

[ ct.C_CODE を c_type_code として選択 gpt.csummary cs, gpt.ctype ct WHERE cs.c_number = ? AND UPPER(ct.C_DESC_TEXT) = UPPER(cs.C_TYPE) ]; ネストされた例外は java.sql.SQLException: ORA-00942: テーブルまたはビューが存在しません

at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

ラップされた例外: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 不適切な SQL 文法 [ SELECT ct.C_CODE as c_type_code FROM gpt.csummary cs, gpt.ctype ct WHERE cs.c_number = ? AND UPPER(ct.C_DESC_TEXT) = UPPER(cs.C_TYPE) ]; ネストされた例外は java.sql.SQLException: ORA-00942: テーブルまたはビューが存在しません。

しかし、ヒキガエルで同じことを実行すると、すべて正常に動作します。DB 接続スキーマがすべて正しく指定されていることがわかります。しかし、DAO の finObject で失敗するのはなぜですか。入力はありますか?

4

1 に答える 1

0

使用する必要があるようです:

select * from schema.table_name 
于 2012-12-03T21:36:25.970 に答える