我添加了以下注释以启用我的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 找不到
任何人都可以帮助我,让我知道我目前需要做什么或做错了什么?
答案 0 :(得分:3)
@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE)
将解决问题
答案 1 :(得分:2)
嗯..我最终得到了它。修复它真的很奇怪,似乎确实是一个报告错误。
我需要做的是将所有Hibernate库添加到我的Netbeans web / war项目中。一旦我这样做,错误就消失了。
这很奇怪,因为Hibernate库已经包含在耳朵项目中,该项目也在Web项目库中。
答案 2 :(得分:0)
你没有做错任何事 - 你的注释都没问题。
根据错误消息判断它是编译器错误。你可以:
@Cache
声明(因为我确信很多其他人都这样做了)而且我对编译没有任何问题意味着你得到(非)幸运。答案 3 :(得分:0)
您只需将hibernate-annotations jar添加到您的web / war项目中。
答案 4 :(得分:0)
我通过在maven多模块项目的pom中将hibernate库从提供的更改为编译来解决这个问题。