@Cache注释使用错误

时间:2009-10-23 14:46:29

标签: hibernate caching ejb-3.0 ehcache java-ee-5

我添加了以下注释以启用我的EJB3实体之一的缓存,以使用ehCache测试缓存,其中我使用Hibernate作为持久性提供程序:

....
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 {
   .....
}

我在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"/>

当我尝试编译时,我收到以下错误:

  

/persistence/F.class):警告:不能   在中找到注释方法'usage()'   类型   'org.hibernate.annotations.Cache':   类文件   org.hibernate.annotations.Cache没有   发现了一个例外   编译器(1.6.0_16)。请提交一个错误   在Java Developer Connection上   (http://java.sun.com/webapps/bugreport)   在检查了Bug Parade之后   重复。包括你的程序和   您的以下诊断   报告。谢谢。   com.sun.tools.javac.code.Symbol $ CompletionFailure:   类文件   org.hibernate.annotations.CacheConcurrencyStrategy   找不到

任何人都可以帮助我,让我知道我目前需要做什么或做错了什么?

5 个答案:

答案 0 :(得分:3)

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

将解决问题

答案 1 :(得分:2)

嗯..我最终得到了它。修复它真的很奇怪,似乎确实是一个报告错误。

我需要做的是将所有Hibernate库添加到我的Netbeans web / war项目中。一旦我这样做,错误就消失了。

这很奇怪,因为Hibernate库已经包含在耳朵项目中,该项目也在Web项目库中。

答案 2 :(得分:0)

你没有做错任何事 - 你的注释都没问题。

根据错误消息判断它是编译器错误。你可以:

  1. Update to the latest JDK version(1.6.0_16-b01)。
  2. 重新排列注释,并希望不会触发编译器错误。是的,这听起来很愚蠢但是我已经广泛使用了@Cache声明(因为我确信很多其他人都这样做了)而且我对编译没有任何问题意味着你得到(非)幸运。
  3. 尝试使用其他编译器(从Eclipse构建)
  4. 向Sun提交错误报告。

答案 3 :(得分:0)

您只需将hibernate-annotations jar添加到您的web / war项目中。

答案 4 :(得分:0)

我通过在maven多模块项目的pom中将hibernate库从提供的更改为编译来解决这个问题。