2016-09-05 4 views
0

私は、CriteriaBuilderを使用してアプリケーションの検索を作成しています。テーブルの1つに複数のデータ型を格納するための列があります。 valueStringで、CriteriaBuilder述語の日付に文字列をキャストする方法

Predicate datePredicate = cb.lessThan(field.get(MyTable_.value), new Date());

しかし:私がやりたいことは簡単です基本的に

Sane way to store different data types within same column in postgres?実装は、この質問に与えられた答えのオプション2に似ています) Dateと適切に比較することはできません。

私の質問は、文字列を比較のために日付に変換/キャストするいくつかの方法はありますか?

+0

文字列フィールドに保存されます日付形式は何ですか? – ujulu

+0

「16/08/2016」のようなものです。 –

+0

私が知る限り、比較のために文字列フィールドをキャストする方法はありません。 'value'フィールドを日付の型に変更する必要があります。 – ujulu

答えて

-1

それはキャストを介して可能ではないのですが、あなたはこれまでに文字列を解析してSimpleDateFormatを使用することができます。

String date1AsString = "20160101"; 
Date date1AsDate = new SimpleDateFormat("yyyyMMdd").parse(date1AsString); 
+0

これは、 'field.get(MyTable_.value)'が技術的に 'String'を提供するのではなく' Path 'を提供するというような、Formatterを使用する際の問題点です。私が何かが欠けていない限り、これはうまくいかないでしょう。 –

+0

申し訳ありませんあなたの質問は、文字列を日付に変換する方法だと思った。どのPathクラスを使用していますか? – huellif

+0

これは 'javax.persistence.criteria'のものです。 –

関連する問題