相关疑难解决方法(0)

在JPA 2中,使用CriteriaQuery,如何计算结果

我对JPA 2很新,它是CriteriaBuilder/CriteriaQuery API:

CriteriaQuery 的javadoc

CriteriaQuery 在Java EE 6教程中

我想计算CriteriaQuery的结果而不实际检索它们.这是可能的,我没有找到任何这样的方法,唯一的方法是这样做:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();

CriteriaQuery<MyEntity> cq = cb
        .createQuery(MyEntityclass);

// initialize predicates here

return entityManager.createQuery(cq).getResultList().size();
Run Code Online (Sandbox Code Playgroud)

这不是正确的方法......

有解决方案吗?

java criteriaquery jpa-2.0

109
推荐指数
5
解决办法
13万
查看次数

如何在连接多个表时使用JPA Criteria API

这是对此的进一步问题:

如何在JOIN中使用JPA Criteria API

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();

CriteriaQuery<Company> criteria = criteriaBuilder.createQuery( Company.class );
Root<Company> companyRoot = criteria.from( Company.class );
Join<Company,Product> products = companyRoot.join("dentist");
Join<Company, City> cityJoin = companyRoot.join("address.city");//Company->Address->City-city
criteria.where(criteriaBuilder.equal(products.get("category"), "dentist"),      criteriaBuilder.equal(cityJoin.get("city"),"Leeds"));
Run Code Online (Sandbox Code Playgroud)

公司有地址,地址内有City-pojo和Country-Pojo.我该如何使用它JOIN?我尝试引用它,address.city但我收到了错误消息:

来自托管类型[EntityTypeImpl @ 1692700229:Company [javaType:class com.test.domain.Company descriptor:RelationalDescriptor(com.test.domain.Company - > [DatabaseTable(COMPANY)])的属性[address.city],映射:16]]不存在.

java jpa join criteria-api

11
推荐指数
1
解决办法
5万
查看次数

JPA / Hibernate:CriteriaBuilder - 如何使用关系对象创建查询?

我有以下四个表:

SCHEDULE_REQUEST 表: ID、APPLICATION_ID (FK)

应用表: ID、代码

USER_APPLICATION 表: APPLICATION_ID (FK)、USER_ID (FK)

用户表: ID、姓名

现在我想创建一个CriteriaBuilderwhere 条件是选择ScheduleRequests指定的用户 ID。

我有以下代码:

List<User> usersList = getSelectedUsers(); // userList contains users I wanted to select

CriteriaBuilder builder = getJpaTemplate().getEntityManagerFactory().getCriteriaBuilder();
CriteriaQuery<ScheduleRequest> criteria = builder.createQuery(ScheduleRequest.class);
Root<ScheduleRequest> scheduleRequest = criteria.from(ScheduleRequest.class);
criteria = criteria.select(scheduleRequest);

ParameterExpression<User> usersIdsParam = null;
if (usersList != null) {
    usersIdsParam = builder.parameter(User.class);
    params.add(builder.equal(scheduleRequest.get("application.userApplications.user"), usersIdsParam));
}

criteria = criteria.where(params.toArray(new Predicate[0]));

TypedQuery<ScheduleRequest> query = getJpaTemplate().getEntityManagerFactory().createEntityManager().createQuery(criteria);

// Compile Time Error here:
// The method …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa criteria filter

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×3

jpa ×2

criteria ×1

criteria-api ×1

criteriaquery ×1

filter ×1

hibernate ×1

join ×1

jpa-2.0 ×1