`
liwy2008
  • 浏览: 27596 次
  • 性别: Icon_minigender_2
  • 来自: 海口
社区版块
存档分类
最新评论

jpa查询语言6

    博客分类:
  • jpa
阅读更多
="acronym">API提供的方法--executeUpdate(),来执行更新或是删除操作。如果你使用getResultList()或getSingleResult(),持久化实现会抛出一个IllegalStateException 异常。同样,你用executeUpdate()来执行一个SELECT查询,持久化实现会抛出一个IllegalStateException 异常。

下面是一些批量更新的例子。



一个论坛帖子数量的两倍。

Query q2 = em.createQuery("UPDATE Forum AS f "+"SET f.forumPostCount = f.forumPostCount * 2");q2.executeUpdate(); 将所有的Role实体的dateUpdated字段设置为当前日期和时间。

Query q = em.createQuery("UPDATE Role AS r " +"SET r.dateUpdated = CURRENT_TIMESTAMP");q.executeUpdate(); 将布尔字(pruningEnabled))段值设置为true。在agoraBB应用程序中,用EntityListener类来设置dateUpdated和updatedByUser字段。version字段是由持久化实现进行管理。避开这些弯弯角角,当你执行批量操作时,你的查询写成更新字段。还有,要注意的是,executeUpdate返回实体更新的数目(删除时返回删除的数量)。

// Assume we already fetched the correct User identified by// the variable adminUserQuery forumUpdate = em.createQuery("UPDATE Forum AS f " +"SET f.pruningEnabled = TRUE, f.dateUpdated = CURRENT_TIMESTAMP, " +"f.version = f.version + 1, f.updatedByUser = :user");forumUpdate.setParameter("user", adminUser);int entitiesUpdated = forumUpdate.executeUpdate(); 你可以将pruningEnabled的值设置为null,将其进行重位。如下所示。

Query pruningReset = em.createQuery("UPDATE Forum AS f " +"SET f.pruningEnabled = NULL");pruningReset.executeUpdate(); 这条查询设置了enum类型的字段值。你必须使用enum类的长限定词,因为enum不是实体,持久化实现不法获得Status的信息,但它可以识别com.sourcebeat.jpa.model.Status。

Query enumUpdate = em.createQuery("UPDATE Forum AS f " +"SET f.status = com.sourcebeat.jpa.model.Status.LOCKED " +"WHERE f.type = com.sourcebeat.jpa.model.FTPType.ANNONUCEMENT");int enumUpdateCount = enumUpdate.executeUpdate(); 这里有几个DELETE操作的例子。



删除系统中所有无密码的用户(Users)。

Query removeRoles = em.createQuery("DELETE FROM User u " +"WHERE u.password = NULL");int rolesRemoved = removeRoles.executeUpdate(); 删除没有主题(Topics)的论坛(Forum)。

Query removeForums = em.createQuery("DELETE FROM Forum f " +"WHERE f.topics IS EMPTY");int forumsRemoved = removeForums.executeUpdate();




总结(SUMMARY)
JPQL提供了大量实体查询,分组,排序和总结的功能。包括丰富的关联(join)操作支持和即时读取延迟关联关系(eagerly fetch lazy relationship)的能力。你已经学习所支持的各种函数和表达式,以及SELECT语句所能提供的各种选项。本章最后探讨了批量处理操作,它具备使用单条查询语句(实际是指UPDATE或DELETE语句)影响一个或多个实体的能力。

现在你应该很熟悉了JPQL所能提供的丰富的功能,利用它,从简单到复杂一步步地创建自己的查询。
分享到:
评论

相关推荐

    jpa查询语言.pdf

    jpa查询语言.pdf

    JPA查询语言[归类].pdf

    JPA查询语言[归类].pdf

    JPA学习中文文档

    JPA包括以下3方面的技术: RM映射元数据,JPA支持XML和JDK 5.0注解两种元数据的形式,元...查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

    Java JPA 学习资料 合集

    JPA 规范部分详细的介绍了 JPA 中实体 Bean 的定义,并介绍了实体 Bean 支持的注释、全新的查询语言、实体管理接口、容器实现规范等内容。 JPA 标准制定过程中充分吸收了目前已经出现的所有持久化技术的所有优点,...

    JPA深度刘宝宝剖析版第一讲

    可媲美JDBC的查询能力: JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。 支持面向对象...

    Spring Data JPA笔记.zip

    JPA 的全称是 Java Persistence API, 即 Java 持久...JPA 的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以 看成是 Hibernate HQL 的等价物。 本文档包含了JPA的课件笔记与学习标注。

    JPA 资料大集合

    每个批注的详细与使用 查询语言 教程等等

    国外java源码社区-graphql-jpa-query:为您的JPA实体模型生成GraphQL查询Api

    查询语言,用于使用现有数据完成这些查询。 GraphQL 为您的 API 中的数据提供了完整且易于理解的描述,让客户能够准确地询问他们需要什么,更容易随着时间的推移发展 API,并启用强大的开发人员工具。 您的应用程序...

    JPA开发文档API

    JDBC支持处理大量的数据,能够保证数据的一致性,支持信息的并发访问,提供 SQL 查询语言查找数据。JDBC 所使用的关系模型不是为保存对象而设计的,因此迫使开发者选择在处理持久数据时放弃面向对象编程,或者自己去...

    开发JPA应用.pdf

    EJB 查询语言开发。其实关于JPA 还有一部分是基于EJB 容器环境 的开发,那一部分内容我们将会放到后面的EJB 开发一章来介绍。由于MyEclipse 6 对JPA 开发提供了很方便的支持,因此我们的内容主要就集中在如何使用...

    jpa使用说明(English)

    查询语言查找数据。 JDBC 所使用的关系模型不是为保存对象而设计的, 因此迫使开发者选择在处理持久数据时 放弃面向对象编程, 或者自己去开发将面向对象特性(比如: 类之间的继承) 和关系型数据 库进行...

    开发JPA应用

    13.1.3.6 JPA 查询语言(JPA QL)简介...................... 19 13.1.3.7 回调方法 ....................................... 21 13.2 准备工作............................................ 22 13.3创建...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第11章 JPA的查询支持 456 11.1 查询API 457 11.1.1 面向对象的JPQL 457 11.1.2 查询API简介 457 11.2 执行查询 459 11.2.1 使用Query创建查询 459 11.2.2 设置查询参数 459 11.2.3 取得查询结果 460 11.3 JPQL语法 ...

    Spring Data JPA 106精讲

    Spring Data 是 Spring 的一个子...2:详解Spring Data JPA封装的各种查询方式 3:详解Spring Data JPA常用接口 4:详解Spring Data JPA各种查询方式 5:详解Spring Data JPA在web方面的用法 具体内容,可以参考大纲:

    FluentJPA:Fluent API,用于用Java为JPA编写类型安全SQL查询

    通过JPA重新控制SQL FluentJPA是一种用于关系(SQL)数据库和JPA的语言集成查询(LINQ)技术。 它允许您通过直接集成到语言中来使用Java编写强类型查询。FluentJPA如何集成到Java中? 乍一看,似乎我们需要Java...

    Spring boot + JPA进销存管理系统源码

    本系统基本完成了一个基于spring boot + JPA的进销存管理系统,主要实现采购管理、库存管理、销售管理、查询统计、资料管理和系统管理功能。 本系统的实现依靠了很多计算机技术,包括Java语言、Spring boot框架、JPA...

    基于springboot+mysql+SpringDataJPA +html实现学生选课管理系统

    编程语言:JDK1.8,HTML,CSS,JS,jQuery 数据库:mysql5.7以上 4.项目需求 题目描述 基于Spring Boot和Spring Data JPA设计一个简单的在线课程系统,需要实现以下功能: 1.课程的增删改查(CRUD),每门课程包括课程...

    Spring boot + JPA进销存管理系统源码详细部署说明

    现采购管理、库存管理、销售管理、查询统计、资料管理和系统管理功能。 本系统的实现依靠了很多计算机技术,包括Java语言、Spring boot框架、 JPA持久层框架和MySQL数据库。带视频,带文档 运行环境:idea/...

    JPA-eclipselink-project:使用 EclipseLink 实现的 JPA 项目示例

    API 提供类似于 SQL 的查询语言,但使用对象而不是数据库中的关系实体。 Java Persistence API 基于实体,这些实体是简单的带注释的 POJO,以及这些实体的管理器 (EntityManager),它提供处理它们的功能(添加、...

    Eclipsejee下JPA的开发

    一、预备知识JPA即JavaPersistenceAPI,它是是EJB3.0规范(JSR...1,简化程序模型2,使用注释,简化配置3,ORM:对象关系映射4,EJB-QL:提供了动态查询,和功能强大的EJB查询语言5,独立。可在EJB容器之外单独运行,也

Global site tag (gtag.js) - Google Analytics