【问题标题】:@Cache annotation usage error@Cache 注解使用错误
【发布时间】:2010-12-09 11:52:43
【问题描述】:

我添加了以下注释以启用对我的 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 开发者连接 (http://java.sun.com/webapps/bugreport) 在检查了 Bug Parade 之后 重复。包括你的程序和 您的以下诊断 报告。谢谢你。 com.sun.tools.javac.code.Symbol$CompletionFailure: 类文件 org.hibernate.annotations.CacheConcurrencyStrategy 没找到

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

【问题讨论】:

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


    【解决方案1】:
    @org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)
    

    解决问题

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 鉴于此,您应该接受您的回答,以便结束此问题。
      • 鉴于此,您还应该在答案中提及缺少的依赖项
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我通过在 maven 多模块项目的 pom 中将休眠库从 provided 更改为 compile 解决了这个问题。

          【讨论】:

            猜你喜欢
            • 2021-10-24
            • 2019-11-26
            • 1970-01-01
            • 2018-10-11
            • 1970-01-01
            • 2014-03-20
            • 1970-01-01
            • 2017-06-18
            • 1970-01-01
            相关资源
            最近更新 更多