//hibernate 3.5.1
// //Simple Query
Query query = entityManager.createQuery("from SimpleBean s");
List<SimpleBean> list = query.getResultList();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root<SimpleBean> from = criteriaQuery.from(SimpleBean.class);
CriteriaQuery<Object> select = criteriaQuery.select(from);
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List<Object> resultList = typedQuery.getResultList();
assertEqualsList(list, resultList);
// //Simple Query with Order
List<SimpleBean> expected= entityManager.createQuery("from SimpleBean s order by s.pbyte asc ,s.pint desc").getResultList();
//...
CriteriaQuery<Object> select = criteriaQuery.select(from);
select.orderBy(criteriaBuilder.asc(from.get("pbyte")),criteriaBuilder.desc(from.get("pint")));
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
//...
// //Simple Query with selected fields
Query query = entityManager.createQuery("select s.id,s.pbyte from SimpleBean s ");
List listExpected = query.getResultList();
//...
CriteriaQuery<Object> select = criteriaQuery.multiselect(from.get("id"),from.get("pbyte"));
// //Query with single criteria
int arg1 = 20000;
Query query = entityManager.createQuery("from SimpleBean s where s.pint>=:arg1");
query.setParameter("arg1", arg1);
List<SimpleBean> list = query.getResultList();
//...
CriteriaQuery<Object> select = criteriaQuery.select(from);
Predicate predicate = criteriaBuilder.ge(from.get("pint"), arg1);
criteriaQuery.where(predicate);
//...
// //Query with multiple criterias
int arg1 = 20000;
int arg2 = 50000;
Query query = entityManager.createQuery("from SimpleBean s where s.pint>=:arg1 and s.pint<=:arg2");
query.setParameter("arg1", arg1);
query.setParameter("arg2", arg2);
List<SimpleBean> list = query.getResultList();
//..
Predicate predicate1 = criteriaBuilder.ge(from.get("pint"), arg1);
Predicate predicate2 = criteriaBuilder.le(from.get("pint"), arg2);
criteriaQuery.where(criteriaBuilder.and(predicate1, predicate2));
//..
// //Query with single literal
String arg1 = "name";
Query query = entityManager.createQuery("from SimpleBean s where upper(s.pstring) like upper(:arg1)");
query.setParameter("arg1", arg1);
List<SimpleBean> list = query.getResultList();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root from = criteriaQuery.from(SimpleBean.class);
CriteriaQuery<Object> select = criteriaQuery.select(from);
Expression<String> literal = criteriaBuilder.upper(criteriaBuilder.literal((String) arg1));
Predicate predicate = criteriaBuilder.like(criteriaBuilder.upper(from.get("pstring")), literal);
criteriaQuery.where(predicate);
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List<Object> resultList = typedQuery.getResultList();
assertEqualsList(list, resultList);
// //Query with summary (min,max,avg)
Query query = entityManager.createQuery("select min(s.pint) from SimpleBean s");
Object minActual = query.getSingleResult();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root from = criteriaQuery.from(SimpleBean.class);
Expression minExpression = criteriaBuilder.min(from.get("pint"));
CriteriaQuery<Object> select = criteriaQuery.select(minExpression);
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
Object minExpected = typedQuery.getSingleResult();
assertEquals(minActual, minExpected);
// //Query with aggreation (group by)
Query query = entityManager.createQuery("select min(s.pint),s.pbyte from SimpleBean s group by s.pbyte");
List listExpected = query.getResultList();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root from = criteriaQuery.from(SimpleBean.class);
Expression minExpression = criteriaBuilder.min(from.get("pint"));
Path pbytePath = from.get("pbyte");
CriteriaQuery<Object> select = criteriaQuery.multiselect(minExpression, pbytePath);
CriteriaQuery<Object> groupBy = select.groupBy(pbytePath);
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List listActual = typedQuery.getResultList();
// //Simple Join query
long category=200L;
Query query = entityManager.createQuery("select s from OrderItem s " +
"where s.product.category=:cat");
query.setParameter("cat", category);
List<OrderItem> list = query.getResultList();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root<OrderItem> from = criteriaQuery.from(OrderItem.class);
Path<Object> path = from.join("product").get("category");
CriteriaQuery<Object> select = criteriaQuery.select(from);
select.where(criteriaBuilder.equal(path, category));
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List<Object> resultList = typedQuery.getResultList();
assertEqualsList(list, resultList);
// //simple fetch join query
long category=200L;
Query query = entityManager.createQuery("select s from OrderItem s " +
"join fetch s.product where s.product.category=:cat");
query.setParameter("cat", category);
List<OrderItem> list = query.getResultList();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root<OrderItem> from = criteriaQuery.from(OrderItem.class);
Path<Object> path = from.join("product").get("category");
from.fetch("product"); //FETCH product
CriteriaQuery<Object> select = criteriaQuery.select(from);
select.where(criteriaBuilder.equal(path, category));
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List<Object> resultList = typedQuery.getResultList();
assertEqualsList(list, resultList);
// //subselect (subquery) join query
Query query = entityManager.createQuery(
"select s from OrderItem s join fetch s.product" +
" where s.product.category in" +
" (select sb.pbyte from SimpleBean sb where sb.pint>=30000)");
List<OrderItem> list = query.getResultList();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
Root<OrderItem> from = criteriaQuery.from(OrderItem.class);
Path<Object> path = from.join("product").get("category");
from.fetch("product");
CriteriaQuery<Object> select = criteriaQuery.select(from);
Subquery<SimpleBean> subquery = criteriaQuery.subquery(SimpleBean.class);
Root fromSimpleBean = subquery.from(SimpleBean.class);
subquery.select(fromSimpleBean.get("pbyte"));
subquery.where(criteriaBuilder.ge(fromSimpleBean.get("pint"),30000));
select.where(criteriaBuilder.in(path).value(subquery));
TypedQuery<Object> typedQuery = entityManager.createQuery(select);
List<Object> resultList = typedQuery.getResultList();
assertEqualsList(list, resultList);
分享到:
相关推荐
kotlin-jpa-specification-dsl:该库提供了流利的DSL,用于使用spring数据规范(即JPA Criteria API)查询spring数据JPA存储库,而无需样板代码或生成的元模型
炽烈持久Blaze-Persistence是面向JPA提供程序的丰富的Criteria API。它是什么? Blaze-Persistence是面向JPA提供者的丰富的Criteria API,旨在超越所有其他可用的Criteria API。 它提供了用于构建查询的流畅API,并...
JPA2.0 应广大开发者要求增加了 Criteria API .要是你对 Hibernate 或 TopLink 的 Criteria API 不熟悉的话,可以将它想像成一个以 Java 为中心的面向对象,线程安全并可以与 JPQL 划上等号的一组 API .这组 API ...
Java™Persistence API (JPA) 的2.0 版本引入了Criteria API,这个API 首次将类型安全查询引入到Java 应用程序 中,并为在运行时动态地构造查询提供一种机制。本文介绍如何使用Criteria API 和与之密切相关的...
使用SQL或JPQL动态或命名查询,Criteria API或Querydsl编写持久性查询的比较,以及在单元测试中运行的示例查询。 设置 为了在本地运行JUnit测试,您需要根据配置来设置数据库。 例如,当使用NetBeans IDE 8.0时: ...
Criteria2JPQL API是功能强大的Hibernate Criteria API对标准JPA API的改编,可与任何orm工具兼容。 针对由Hibernate Criteria创建的本机SQL查询,Criteria2JPQL输出标准JPQL查询。
Java:trade_mark:PersistenceAPI(JPA)的2.0版本引入了CriteriaAPI,这个API首次将类型安全查询引入到Java应用程序中,并为在运行时动态地构造查询提供一种机制。本文介绍如何使用CriteriaAPI和与之密切相关的...
该草案获得JSR-317专家组全部通过 新增了大量的特性包括类型安全的动态查询(Criteria API );加入了大量必须的 ORM 映射增强特性;标准的二级缓存,标准的 JDBC properties ,指定超时时间等等; 目前hibernate 3.5 ...
Java项目旨在提供使用JPQL查询和Criteria API的示例。 资料建模 例子: 与mappedBy联接:两个类之间的双向关系映射 延迟加载 延迟加载 FetchType EAGER 加入获取 上篮 使用SUM和AVG函数进行查询 数据访问对象(DAO...
JPA 2.0为了弥补JPA1.0的不足,才将这种Query的思想引入为框架中的另一套查询体系——Criteria API。事实上针对单个对象的get/load/persist/save/update/merge/saveOrUpdate API和Criteria API本来就为一体,只不过...
使用Java JEE Spring Boot的Simm Restful Service API 数据库= H2(在内存数据库中) JPA访问数据库 克隆项目并使用8055端口运行 CriteriaBuilder qb = entityManager . getCriteriaBuilder(); CriteriaQuery...
这是一种使用Java代码创建和执行JCR查询的方法,使用的接口受Hibernate / JPA使用的Criteria API的启发。 该代码基于Openmind开发的的 (openutils-mgnlcriteria)模块。 相较于openutils-mgnlcriteria存在于任何...
由于 JPA 已经真正推进到第 2 版,它的 Criteria API 似乎过于冗长且难以使用,主要用于更详细的查询。 在我看来,与使用 API 相比,编写简单的老式 JPQL/SQL 感觉更容易理解并且更清晰。 但是写这些查询很无聊...
This document is the specification of the Java API for the management of persistence and object/relational ... It adds an API for criteria queries, a metamodel API, and support for validation.
企业应用通过ORM使用JPA(没有SQL,使用Criteria API)与数据库打交道,与用户端基于模板的JSF,添加和更新地址,下载预测,查看和过滤日志,查看和过滤更改后,所有操作均由 Ajax 执行。 名为 {LDAP_username} _...
・ Spring Data Jpa→CRUD技术(SpecificationAPI,CriteriaAPI等)开发环境-前端:“ vue.js”“ thymeleaf”“ BootStrap”-生成工具:“ Gradle”・后端:“ Spring Boot”-迁移:“飞行路线”-数据库:“ ...
Java ... Ørespoitório JPA2 e hibernate com Criteria E中的continuação做projeto做repositório JPA2 e hibernate ,porém山岛JPQLêAPI标准。 Ørespoitório spring data possui嗯projet
DfailIfNoTests=falseL2快取 mvn clean test -Parq-wildfly-managed -Dtest=DeliveryNoteServiceTest#shouldBeCached -DfailIfNoTests=false使用Criteria API的构造函数查询 mvn clean test -Parq-wildfly-managed -...
Hibernate简介、Session API、对象的状态 查询操作(主键查询、HQL查询、Criteria查询、SQL查询、命名查询、doWork) 关联关系:多对一、一对多、多对多、一对一 组件映射、继承映射、缓存、JPA 反向工程、封装...