私が直面している実際の問題は、キャッシュの内容に関係なく、eclipselink の更新を強制できることです。現在、eclipselink は、新しい更新がキャッシュ内と同じ値を持つ場合、新しい更新ステートメントを作成しません。<property name="eclipselink.query-results-cache" value="false"/>
で refresh プロパティ( )を使用したくありませんpersistence.xml
。
キャッシュ内の値を使用しないようにエンティティを更新するように指定できるソリューションを探しています。
EntityManager em = getEntityManager();
EntityTransaction t = em.getTransaction();
t.begin();
Ticket ticket = get(ticketId);
if (ticket == null) {
return null;
}
ticket.setState(status);
em.persist(ticket);
t.commit();
上記の update (setState
メソッド) を sql クエリに変更すると、クエリ オブジェクトには setHint を実行するオプションがあり、setHint(QueryHints.CACHE_USAGE, CacheUsage.DoNotCheckCache)
. このような更新がたくさん使用されているため、これもできません。
上記のスニペットでは、setter メソッドを使用して更新が行われていますが、このシナリオでは、キャッシュを無視するヒントをどのように指定すればよいでしょうか? または、セッターオブジェクトを使用して強制更新を行う他の方法はありますか?
私の問題はこれに似ています: http://www.eclipse.org/forums/index.php/m/660750/