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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

1254閲覧

CriteriaBuilderのlikeメソッドで、Dateを扱えない

ryu-bamboo

総合スコア9

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/07/20 14:35

Spring bootで、データベースから条件を絞って検索したいと思い、このサイトを参考に、JPA Specificationを使って実装していました。そして、自分が条件を付けたかったColumnはDate型だったので、

java

1 2/*import java.util.Date; 3import java.sql.Date; 4 どちらでやってみても変わらなかった。 5*/ 6 7 public static Specification<MenuTableData> dateContains(Date date) { 8 return ObjectUtils.isEmpty(date) ? null : (root, query, cb) -> { 9 return cb.like(root.get("dateCol"), "%" + date + "%"); 10 };

このようにしたところ、

Parameter value [2021-07-15 00:00:00] did not match expected type [java.util.Date (n/a)];

とエラーが出てしまいました。java.util.Date型にしろと言われても、
CriteriaBuilderのlikeメソッドの第二引数にDateを配置することはできないので
どうすればよいのかが全く見当がつきません。何がいけないのでしょうか。

丸投げになってしまい申し訳ないですが、何から始めればいいか教えていただきたいです。

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

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

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

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

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

Crimson_Tide

2021/07/20 20:37

自分だったら ・エラーメッセージを正確に把握する (deeplで翻訳 、エラーメッセージ検索、エラーメッセージを発しているソースを確認) ・likeメソッドの定義を調べる ・likeメソッドのソースを調べる ・同じように日付を取得しlikeメソッドを使っている事例を検索する ・参考にされているサイトではソースを公開しているので、ソースを確認する ・"%" + date + "%" が どのような文字列になるか確認する ・”%07-15%” のように直接文字列を指定してみる ・他のメソッドが使えないか検討する did not match expected type java.util.date (n/a) で検索して 2番めに↓がありました。 https://teratail.com/questions/134013 Timestamp型 についてなのでそのままDate型で適用できるかは確証ないのでご参考まで
ryu-bamboo

2021/08/07 07:36

返信ありがとうございます、返答が遅れてしまい、すみません。 提示していただいたリンクのおかげで、LikeメソッドはStringにしか使わないことがわかりました。 Entityのフィールドの型をStringに直したところ、問題なく出来ました。本当にありがとうございます。
guest

回答1

0

likeメソッドは、Stringでしか使わないので、Entityのdate型をStringに直してやると、期待する動作をしてくれました。

投稿2021/08/07 07:38

ryu-bamboo

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問