@Cache annotation usage error

2019-04-22 03:44发布

I added the following annotation to enable cache to one of my EJB3 entities, to test caching with ehCache, where I use Hibernate as the persistence provider:

....
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Table(name = "F")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
@NamedQueries({ @NamedQuery(name = "F.findAll", query = "SELECT f FROM F f")})
public class F implements Serializable {
   .....
}

I added the following to persistence.xml:

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>

And when I try to compile I get the following error:

/persistence/F.class): warning: Cannot find annotation method 'usage()' in type 'org.hibernate.annotations.Cache': class file for org.hibernate.annotations.Cache not found An exception has occurred in the compiler (1.6.0_16). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you. com.sun.tools.javac.code.Symbol$CompletionFailure: class file for org.hibernate.annotations.CacheConcurrencyStrategy not found

Can anyone help me out here and let me know what I need to do or am doing wrong currently ?

5条回答
祖国的老花朵
2楼-- · 2019-04-22 04:27

You only have to add hibernate-annotations jars to your web/war project.

查看更多
神经病院院长
3楼-- · 2019-04-22 04:28
@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)

will solve the problem

查看更多
混吃等死
4楼-- · 2019-04-22 04:31

You're not doing anything wrong - your annotations are fine.

Judging by the error message it's a compiler bug. You can:

  1. Update to the latest JDK version (1.6.0_16-b01).
  2. Rearrange your annotations and hope that compiler bug will not be triggered. Yes, that sounds silly but I have used @Cache declarations extensively (as I'm sure many other people did) and I have no problems with compilation meaning you just got (un)lucky.
  3. Try a different compiler (build from Eclipse)
  4. Submit a bug report to Sun.
查看更多
▲ chillily
5楼-- · 2019-04-22 04:42

I solved this by changing the hibernate libraries from provided to compile in the pom of a maven multi module project.

查看更多
可以哭但决不认输i
6楼-- · 2019-04-22 04:43

Well .. I got it to work eventually. The fix for it is really strange and really does seem to be a reported bug.

What I needed to do was to add all the Hibernate libraries to my Netbeans web/war project as well. Once I did that, the errors went away.

This was strange because the Hibernate libraries were already included in the ear project which was also in the web project library.

查看更多
登录 后发表回答