使用Java从数据库视图中检索没有结果

时间:2013-11-12 11:18:48

标签: java database view jpa-2.0 criteriaquery

我的数据库中有一个名为V_ENTITY的视图,其中填充了一些条目。在Eclipse中使用SQL剪贴簿我可以轻松地执行返回所需结果的查询。

但是,当我尝试从DAO类中检索条目时,我什么都没得到。我的计数返回0作为条目数,而其中有7个,我可以通过剪贴簿获取本机SQL查询。

我为该特定视图创建了一个单独的实体:

@Entity
@Table(name = "V_ENTITY")
public class ViewEntity {
    ...
}

我使用JPA2 CriteriaQuery API进行动态查询。以下是让我烦恼的计数示例:

    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery<ViewEntity> transactionQuery = cb.createQuery(ViewEntity.class);
    Root<ViewEntity> ViewEntityRoot = transactionQuery.from(ViewEntity.class);

    Predicate[] predicates = new Predicate[<someSize>]
    predicates[<someIndex>] = cb.equal(
        root.get("foreignName").as(String.class),
        "%" + foreignName + "%"
    )

    CriteriaQuery<Long> countQuery = cb.createQuery(Long.class);
    countQuery.select(cb.count(ViewEntityRoot));
    countQuery.where(predicates);

    TypedQuery<Long> finalQuery = entityManager.createQuery(countQuery);
    return finalQuery.getSingleResult().intValue();

任何人都可以帮我找到我的代码/思考中的缺陷吗?

1 个答案:

答案 0 :(得分:2)

使用<property name="show_sql">true</property>属性向我们显示生成的sql pls