0

以下を使用して、DB にレコードを挿入しています。

        PreparedStatement stmt = null;
        Connection conn = null;

        HashMap<String, Object> hoursMap = new HashMap<String, Object>();



        hoursMap.put("PLACE_ID", hours.getPlaceID());
        hoursMap.put("DAY", hours.getDayID());
        hoursMap.put("TIME_OPEN", hours.getTimeOpen());
        hoursMap.put("TIME_CLOSE", hours.getTimeClose());

        String insertStr = StatementCreator.insertQueryGenerator("HOURS",
                hoursMap);


        try {
            conn = ConnectionManager.getConnection();
            stmt = StatementCreator.createStatement(conn, insertStr, hoursMap,
                    false);

            returnVal = stmt.execute();
            ConnectionManager.closeStatement(stmt);
            System.out.println("Created");
        } catch (SQLException e) {
            System.out.println("ERROR");
            e.printStackTrace();
        } finally {
            ConnectionManager.closeConnection(conn);
        }

        return returnVal;
    }

ただし、これを実行すると、次のエラーが発生します。

org.postgresql.util.PSQLException: エラー: 列 "TIME_OPEN" はタイム ゾーン付きの time 型ですが、式は可変型の文字
です ヒント: 式を書き直すか、キャストする必要があります。ポジション: 71

私が理解できないのはなぜですか?私がそう言う理由は、デバッグモードに入り、内部の準備されたステートメントを見ると、次のように表示されるからです。

INSERT INTO "HOURS" ("TIME_OPEN","DAY","TIME_CLOSE","PLACE_ID")VALUES('11:30:00-0400',6,'23:59:59-0400',541)

これをコピーして SQL エディターに貼り付けると、実行されてレコードが挿入されます。

足りないものはありますか?

4

2 に答える 2