JPA:处理视图

JPA: dealing with Views

我正在尝试实现一个存储库以使用视图。事实上,我正在尝试使用 SimpleJpaRepository 实现,但我在执行时遇到了很多错误,因为我的 DTO 不是 @Entity。只是一个@Table,而且这种元素好像没有映射到JPA的Metamodel中。

这是我的 DTO:

@Table(name = "v_language")
public class VLanguage {

    @Column(name = "isocode")
    private String isocode;

    @Column(name = "name")
    private String name;

    @Column(name = "isdefault")
    private String isdefault;

    // getters and setters
    ...
}

我试图用相同的 SimpleJpaRepository 实现定义一个功能最少的自定义基础存储库(只有一个 findAll() 方法),但是在构建查询时它在执行以下操作时失败了:

Root<U> root = query.from(domainClass);

除了这个例外:

Caused by: java.lang.IllegalArgumentException: Not an entity: class es.prodevelop.pui.common.jpa.model.views.dto.VLanguage
    at org.hibernate.jpa.internal.metamodel.MetamodelImpl.entity(MetamodelImpl.java:194)
    at org.hibernate.jpa.criteria.QueryStructure.from(QueryStructure.java:124)
    at org.hibernate.jpa.criteria.CriteriaQueryImpl.from(CriteriaQueryImpl.java:156)
    at es.prodevelop.pui.common.jpa.configuration.AbstractRepository.applySpecificationToCriteria(AbstractRepository.java:213)
    at es.prodevelop.pui.common.jpa.configuration.AbstractRepository.getQuery(AbstractRepository.java:174)
    at es.prodevelop.pui.common.jpa.configuration.AbstractRepository.findAll(AbstractRepository.java:151)
    ...

有人知道怎么解决吗?

您缺少 @Entity 注释。 请注释您的 class 并重试。