質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

解決済

3回答

12281閲覧

postgresでキャストエラーが発生

milkman4

総合スコア31

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

0クリップ

投稿2016/05/07 15:45

MyBatisとpostgresを使ってjavaのwebアプリケーションを作成しています。
下記のように参照クエリを実行するとキャストエラーが発生してしまいます。

■MyBatisのjavaファイル

java

1 List<RaceEntity> getRace(@NotNull @Param("fromDate") Date fromDate, @NotNull @Param("toDate") Date toDate, @Param("distances") List<Integer> distances);

■MyBatisのxmlファイル

xml

1<select id="getRace" resultMap="raceInfo"> 2 select 3 race_id 4 from t_race 5 where host_date between #{fromDate} and #{toDate} 6 and distance in 7 <foreach item="item" index="index" collection="distances" open="(" separator="," close=")"> 8 #{item,javaType=Integer} 9 </foreach> 10 </select>

■postgresで出力されるエラー

postgreSQL

1ERROR: operator does not exist: integer = character varying at character 541 2HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

■javaのコンソール例外

java

1### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: integer = character varying 2 ヒント: No operator matches the given name and argument type(s). You might need to add explicit type casts. 3 ポジション: 541 4### The error may exist in jp/keiba/analitics/mapper/simulation/SimulationMapper.xml 5### The error may involve defaultParameterMap 6### The error occurred while setting parameters

解決方法がわからず困っております。
お手数をおかけしますがお力添えをいただけると大変幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/05/09 05:55

念のため、カラム distance の型もあわせて記載していただけますか。
guest

回答3

0

自己解決

解決しました!
申し訳ないのですが別の箇所がエラーの原因でした。。。
ご回答いただいたみなさま、大変助かりました。
ありがとうございました。

投稿2016/05/09 12:38

milkman4

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

sqlに対して、::integerといった明示的なキャストはいかがでしょうか。
他言語ですが、PostgreSQLを扱っている際、同様のキャスト時の型チェックによるエラーが発生したことがあり、明示的な型変換で対応できました。
ご参考になれば幸いです。

投稿2016/05/09 05:59

f_horizon

総合スコア163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

推測で申し訳ないですが,型の違いによるエラーに見えたことから、javaTypeの部分を疑いました。

javaType=Integer
->
javaType=int
(もしくはjavaType=java.lang.Integer)

では駄目ですか?
間違っていたら申し訳ない。

投稿2016/05/08 01:38

kentei_syunrai

総合スコア946

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

milkman4

2016/05/08 02:10

いただいたご指摘のとおりやってみましたがエラー変わらずでした。 ご回答ありがとうございます。 他に気になる箇所があればご指摘いただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問