10

我添加了以下注释以启用对我的 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):警告:在“org.hibernate.annotations.Cache”类型中找不到注释方法“usage()”:找不到 org.hibernate.annotations.Cache 的类文件编译器发生异常(1.6.0_16)。在检查 Bug Parade 是否有重复项后,请在 Java 开发人员连接 ( http://java.sun.com/webapps/bugreport ) 提交一个错误。在报告中包含您的程序和以下诊断。谢谢你。com.sun.tools.javac.code.Symbol$CompletionFailure:找不到 org.hibernate.annotations.CacheConcurrencyStrategy 的类文件

谁能在这里帮助我,让我知道我现在需要做什么或做错了什么?

4

5 回答 5

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

会解决问题

于 2017-09-09T14:51:50.877 回答
2

好吧..我最终让它工作了。它的修复真的很奇怪,而且确实似乎是一个报告的错误。

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

这很奇怪,因为 Hibernate 库已经包含在 ear 项目中,而 ear 项目也在 web 项目库中。

于 2009-11-18T14:40:31.373 回答
0

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

于 2011-06-20T20:53:49.280 回答
0

您没有做错任何事情-您的注释很好。

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

  1. 更新到最新的 JDK 版本(1.6.0_16-b01)。
  2. 重新排列您的注释并希望不会触发编译器错误。是的,这听起来很傻,但我已经@Cache广泛使用了声明(我相信很多其他人都这样做了),而且我对编译没有任何问题,这意味着你只是(不)幸运。
  3. 尝试不同的编译器(从 Eclipse 构建)
  4. 向 Sun 提交错误报告。
于 2009-10-23T17:20:02.703 回答
0

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

于 2010-09-13T23:45:27.507 回答