@Cache注释使用错误

Sib*_*Ter 10 caching hibernate ehcache ejb-3.0 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 {
   .....
}
Run Code Online (Sandbox Code Playgroud)

我在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"/>
Run Code Online (Sandbox Code Playgroud)

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

/persistence/F.class):警告:无法在类型'org.hibernate.annotations.Cache'中找到注释方法'usage()':org.hibernate.annotations.Cache的类文件未找到编译器中发生异常(1.6.0_16).在检查Bug Parade重复项后,请在Java Developer Connection(http://java.sun.com/webapps/bugreport)上提交一个错误.在报告中包含您的计划和以下诊断.谢谢.com.sun.tools.javac.code.Symbol $ CompletionFailure:未找到org.hibernate.annotations.CacheConcurrencyStrategy的类文件

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

Chs*_*y76 0

你没有做错任何事——你的注释很好。

从错误消息来看,这是一个编译器错误。你可以:

  1. 更新到最新的 JDK 版本(1.6.0_16-b01)。
  2. 重新排列你的注释并希望不会触发编译器错误。是的,这听起来很愚蠢,但我已经@Cache广泛使用了声明(我确信许多其他人也这样做了),并且我在编译方面没有任何问题,这意味着您只是(不)幸运。
  3. 尝试不同的编译器(从 Eclipse 构建)
  4. 向 Sun 提交错误报告。