2012-02-21 26 views
9

以下のようなカスタムクエリメソッドに対して、SpringデータJPAでクエリキャッシュを使用することができます。デフォルトのSpringデータJPAメソッドにQueryHintsを追加する方法?

public interface CountryRepository extends JpaRepository<Country, String> { 
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) 
Country findByCountryName(String countryName); 
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) 
Country findByCountryCode(String countryCode); } 

ただし、findAll()などの既存の親メソッドに@QueryHintsを追加する方法はありますか?

ありがとうございました。

+0

@oliverは、 -gierke、これを実現する方法はありますか? –

+0

私は同じ問題があります。私はそれらをオーバーライドして@QueryHintアノテーションを追加しようとしましたが、無視されます。 –

+0

@ user791694、下のsgp15の回答を参照してください。http://stackoverflow.com/a/10876707/418439 –

答えて

3

findAll()、findOne()などはクエリではありません。エンティティのキ​​ャッシング仕様は、これらのメソッドで有効です。

例えば、

@Cacheable 
@Entity 
public class User { 

} 
+0

関連[@Cacheable設定](http://stackoverflow.com/a/3664293/418439) –

+0

私はこれらを持っていますそれをデータベースに送ります。私は何かをオンにする必要がありますか? –

+0

@ CacheableはfindAll()に何の影響も与えていないようです。私の理解では、findOne()は "レベル2キャッシュ"にリンクしていますが、 "クエリキャッシュ"にリンクしているfindAll()です。 findAll()をキャッシュするには、メソッドをオーバーライドして@ queryhintsを追加します。 –

1

はもともと、デフォルトのCRUDメソッドでクエリヒントの注釈のサポートはありませんでしたが、どうやらそれはハスバージョン1.6M1のために修正されて:

https://jira.spring.io/browse/DATAJPA-173

関連する問題