2017-02-26 11 views
0

私はドメインオブジェクトGenJournalを持っていて、それは自動的に生成された "id"メンバ(Long)を持っています。また、私が追加したJPAリポジトリもあります。max(id)のクエリーアノテーションが機能しません

@Query("select coalesce(max(u.id), 0) from GenJournal u") 
Long getMaxId(); 

getMaxId()メソッドは、合体を追加する前にゼロまたはnullを返します。私はデータベースにids 1と2を持つ2つの行を持っています。

最新のまたは最大IDを取得しようとしています。そのため、findメソッドを使用して、サービスクラスの最新のGenJournalオブジェクトを返すことができます。

私は困惑しており、なぜこれが機能しないのかを判断するためのオプションや戦略が本当に必要です。あなたは(この

@queryよう@query注釈にnativeQuery =真のparamを渡すことで、 "ネイティブクエリ" 機能を使用することができ

答えて

1

")COALESCE(MAX(u.idを選択し、0)Gen_Journal_Table Uから"、NativeQuery = true) 長いgetMaxId();

+0

私の構文は次のとおりですが、nativeQueryオプションを使用すると成功しました。@Query(nativeQuery = true、value = "gen_journal uからcoalesce(max(u.id)、0を選択)" long getMaxId() –

+0

アイデアコード外でネイティブクエリを実行して結果を確認できますか?だからあなたの場合、あなたのコードは差分dbを指していました。 –

0

私の問題は2倍でした。最初に、「合体」を使わずにヌルになっていました。それが私にはこれがうまくいかないと思うようになった。私が「合体」の使用を採用したとき、私のテーブルには記録がなく、ゼロ(0)が返ってきたことに気付かなかった。生産プロファイルのテーブルに2つのレコードがあり、IDが2であると予想していました。

間違ったデータベースを手動でチェックし、誤った予想を設定していました。

関連する問題