【问题标题】:JPA equivalent of JDO getExtentJPA 等效于 JDO getExtent
【发布时间】:2014-05-14 14:39:13
【问题描述】:

在 JDO 中,您可以定义查询的范围,

PersistenceManager lPM = thePMF.getPersistenceManager();
lPM.getFetchPlan().setMaxFetchDepth( -1 );
Extent< AreaT> lExtent = lPM.getExtent( AreaT.class, true );
Query lQuery = lPM.newQuery( lExtent, "ParentArea == null" );

JPA 中的等价物是什么?

我对 JPA 还很陌生,想知道是否有等价物,或者它只是不直接使用查询字符串。

【问题讨论】:

    标签: java hibernate jpa jdo


    【解决方案1】:

    无需使用 JPA 定义 Extent。

    例如,这是我用来查找特定类的所有对象的方法

    public List<T> findAll() {
       javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
       cq.select(cq.from(AreaT.class));
       return getEntityManager().createQuery(cq).getResultList();
    }
    

    【讨论】:

    • 优秀。我有一种感觉就是这种情况。也感谢 CriteriaQuery 示例,非常酷的东西:3
    【解决方案2】:

    如您所想,它只在 JPA 中直接使用查询完成;该 API 没有对应的 Extent。此外,您无法在 JPA 中排除子类(您可以但必须在 WHERE 子句中设置类型限制!),而在 JDO 中它是一个简单的布尔值。

    【讨论】:

    • 是的,我阅读了子类和查询,发现了 JPA 查询的多态性和子类限制。很高兴知道我在正确的轨道上,干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 2016-02-03
    相关资源
    最近更新 更多