我的数据库中有一个名为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();
谁能帮助我发现我的代码/思想中的缺陷?
最佳答案
使用<property name="show_sql">true</property>
属性向我们显示生成的sql pls