2016-05-09 7 views
1

私はJPQlを使用しています。私は最後の挿入IDをテーブルTestに生成する簡単なメソッドを実装したいと思います。最後の挿入IDを生成するメソッドを実装します

私はあなたが実際に欲しいものを知っていますが、最後に追加されたエンティティ見つけることができるということはよく分からない
public Integer lastInsertId(){ 
    String jpql="select t FROM Test t where id=:LAST_INSERT_ID()"; 
    Query query=entityManager.createQuery(jpql); 
    return ; 
} 
+0

です。問題は?どのデータベースベンダーを使用していますか?提供されたクエリに何かを挿入しようとしていません。 – Tobb

+0

私はテーブルTestの最後の挿入IDを取得したいだけです。 – Georgio

+0

これで、テストで最後に挿入された行のIDが必要になります。あなたはあなたのrdbmsに依存するいくつかの関数を使用したい場合は、 'select t.idから' test t'を選択することもできますし、thin jpqlを使用することもできます(ネイティブSQLが必要です) – Tobb

答えて

0

の場合あなたのIDが逐次的に生成されることを前提に、最後のIDを欲しいだけです。

em.createQuery("select max(t.id) from Test t", Integer.class).getSingleResult(); 
+0

とmethodeは何を返すのですか? – Georgio

+0

この呼び出しはIntegerを返します(IDがどのクラスであってもLongなどに調整します)。 – Tobb

0

String jpql = "select t FROM Test t order by t.id desc"; 

をそして、あなたのIDを取得し、このような何か:

query.setMaxResults(1).getResultList(); 
+0

私は最後に追加されたエンティティを望んでいませんが、最後に追加されたエンティティのIDは – Georgio

+0

ですので、 "t.id descでTest t orderからselect t.id"を使用することができます – andy

+0

@Alexとmethodeは何を返しますか? – Georgio

関連する問題