我使用 Eclipse 和 JBoss Tools 为 Apache TomEE 8.0.16 服务器开发基于 JSF 2.3 和 JPA 2.2 的 Web 应用程序,并使用 Hibernate 作为 JPA 实现。我的项目有很多下拉菜单,想使用Hibernate二级缓存来提高应用程序性能。 Hibernate 特定的
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
注释已添加到 presistance.xml
中的实体和所有其他 Hibernate 属性。但是,在项目构建期间,JBoss Tools CDI 构建器无法构建项目,并且内容辅助在 JSF 视图中不可用。如果删除此 @Cache
注释,则整个项目构建不会出现错误,并且 JSF 视图中可以使用内容辅助,即 JSF beans、bean 实例变量对象和 bean 方法。
bean-discovery-mode="all"
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {
@Id
private String id;
private String fname;
private String lname;
-------- constructor, getters & setters ----
}
Errors occurred during the build.
Errors running builder 'CDI (Contexts and Dependency Injection) Builder' on project 'demo'.
'java.lang.Object org.eclipse.jdt.internal.core.JavaElement.getElementInfo()'
项目正在编译,但出现上述错误,但 Eclipse 内容辅助在 JSF 视图(
.xhtml
文件)中不可用
如何消除此 CDI 构建错误
参考Quarkus的Hibernate指南/章节“缓存”,我可以看到两件事:
@Cacheable
进行注释,不是 @Cache
quarkus.hibernate-orm.second-level-caching-enabled
中的 Quarkus 属性 application.properties
设置为 true;无论如何,这都是默认值@Cache(usage = CacheConcurrencyStrategy.xxx)
注释似乎仅对实体集合/关系生效(请参阅此处)。