开发者

@Cache annotation usage error

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.cac开发者_开发问答he.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 ?


@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)

will solve the problem


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.


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.


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


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜