3

整数を持つエンティティを取得しました

@Entity(name=customer)
public Customer {
    ...
    @Column
    private int number;
    ...
    //getter,setter
}

ここで、この Integer をクエリでキャストして、他の値と比較したいと考えています。

私はこのクエリを試しました:

"SELECT c FROM customer c WHERE CAST(c.number AS TEXT) LIKE '1%'"

しかし、うまくいきません。

4

3 に答える 3

3

これは、Hibernate を使用するコードの一部で機能します。

SELECT c FROM customer c WHERE STR(c.number) LIKE '1%'

一般に、これはHibernate のドキュメント(14.10 Expressions) がキャストについて述べていることです。

数値または時間値を読み取り可能な文字列に変換するための str()

cast(... as ...)、2 番目の引数は Hibernate 型の名前、extract(... from ...) (ANSI の cast() および extract() が基礎となるデータベースでサポートされている場合)

于 2012-07-01T11:07:42.910 に答える
0

テーブル エイリアス c から選択するカラムを指定する必要があります。EJBQL はキャスト関数をサポートしていないため、テキストではなく文字列をクエリに渡します。(これにより、プログラムは EJBQL に到達する前に効果的にキャストを実行できます。)

以下の例は SQL Server のものですが、アイデアを提供する必要があります。

 declare @numberText as varchar(50)
 set @numberText = '1'

 SELECT c.CustomerNumber FROM customer c 
 WHERE c.CustomerNumber  LIKE @numbertext + '%'

private int numberしたがって、使用する代わりにprivate string numberText.

注: OPがEJBQLがCAST関数をサポートしていないことを確認した後、この回答を編集しました。

于 2012-07-01T00:41:44.483 に答える