Hibernate MappingException: Unknown entity: com.xxxxxx.servi



我正在使用maven多模块项目。我将我的逻辑分为不同的层,表示层,业务逻辑层,数据层,每个层都在一个单独的模块(层)中。当我尝试插入对象时,会发生以下异常:

org.hibernate.MappingException: Unknown entity: com.xxxxx.service.model.Object$Proxy$_$$_WeldClientProxy

这是如何造成的,我该如何解决?

我正在使用CDI bean,该应用程序基于JSF2和Hibernate。

当您有一个 JPA 实体时,该问题也声明为 CDI 托管的 Bean,如下所示:

@Named // Or @XxxScoped
@Entity
public class YourEntity {}

您尝试保留 CDI 托管 Bean 实例本身,如下所示:

@Inject
private YourEntity yourCDIManagedEntity;
@PersistenceContext
private EntityManager entityManager;
public void save() {
    entityManager.persist(yourCDIManagedEntity);
}

这不是正确的方法。不应使实体成为 CDI 管理的 Bean。CDI 管理的 Bean 实际上是一个代理类。您可以在异常消息中清楚地看到这一点。它说它不知道实体com.xxxxx.service.model.Object$Proxy$_$$_WeldClientProxy而不是它不知道实体com.xxxxx.service.model.Object

@Entity // NO @Named nor @XxxScoped!
public class YourEntity {}

您应该将其准备为普通实体实例,然后可以安全地将其保留为普通实体。

private YourEntity yourNormalEntity;
@PersistenceContext
private EntityManager entityManager;
@PostConstruct
public void init() {
    yourNormalEntity = new YourEntity();
}
public void save() {
    entityManager.persist(yourNormalEntity);
}

相关内容

  • 没有找到相关文章

最新更新