运行构建器“CDI(上下文和依赖注入)时出错

问题描述 投票:0回答:1

我使用 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 方法。

项目配置:

  • Java - 1.8
  • 动态网络模块4.0
  • CDI(上下文依赖注入)- 2.0 与
    bean-discovery-mode="all"
  • JPA-2.2
  • JavaServer Faces - 2.3
  • JBoss 工具 - 4.29.1,Eclipse 2024-06
  • Apache TomEE 8.0.16 与 Hibernate 5.6 作为 JPA 实现

实体

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable {

  @Id
  private String id;

  private String fname;
  
  private String lname;

  -------- constructor, getters  & setters ----
  
 }

Eclipse 构建错误

 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 构建错误

jpa jsf cdi jboss-tools hibernate-cache
1个回答
0
投票

参考Quarkus的Hibernate指南/章节“缓存”,我可以看到两件事:

  1. 实体本身需要用
    @Cacheable
    进行注释,不是
    @Cache
  2. 您必须确保
    quarkus.hibernate-orm.second-level-caching-enabled
    中的 Quarkus 属性
    application.properties
    设置为 true;无论如何,这都是默认值

@Cache(usage = CacheConcurrencyStrategy.xxx)
注释似乎仅对实体集合/关系生效(请参阅此处)。

© www.soinside.com 2019 - 2024. All rights reserved.