JPA查询语言.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JPA查询语言

JPA查询语言(3) WHERE , GROUP BY , HAVING 这条查询语句会返回一个User实例和他所创建帖子的数量。为了进一步缩小结果范围,你可以使用HAVING过滤分组信息(由GROUP BY标志)。下面的查询会返回User实例及他所发的帖子数量,前提是用户的密码是8个以上的字符。 SELECT u, count(p) From Post p JOIN p.createdByUser u GROUP BY u HAVING length(u.password) 8 条件表达式(CONDITIONAL EXPRESSIONS) 条件表达式可以用在一个JPQL查询的WHERE和HAVING语句中。你必须了解使用条件表达式时的一些约束。条件表达式中包括LOB状态字段可能无法在数据库之间进行移植。 字符串使用单引号字符串包裹,如this。如果要在查询中使用单引号,就要两个一起使用。你无法在查询中使用Java转义方法(例如,\代表单引号)。布尔(Boolean)字符用TRUE和FALSE表示(不区分大小写),数字字符遵从Java规范,不支持日期字符串。同样可以支持Enum,但是你必须使用Enum,全路径名称,如,com.sourcebeat.jpa.model.FTPType。 标识变量必须出现在一个SELECT或DELETE查询的FROM语句中。如果使用UPDATE,那么标识变量就必须在UPDATE语句中。标识变量往往表示他们所定义的实体类型,而不能表示一个集合中的实体。 你可以使用位置或者命名形式的输入参数,但不能在某一查询混合使用这两种形式。输入参数可以出现一个查询的WHERE语句和(或者)HAVING语句中。 位置形式参数的格式是以一个问号(?)打头紧跟一个以1开始的正整数。例如,?1。你可以在一个查询中多个使用同一位置参数,如下所示。 命名形式的参数用一个冒号(:)加一个Java标志符如Java变量名来表示。命名参数表示如下: 函数与表达式(FUNCTIONS AND EXPRESSIONS) JPQL支持函数功能,多种的IN,LIKE和BETWEEN样式表达式,及面向集合(collection)的条件表达式。这一节详细讨论写查询可用的各种选择。一个查询语句中操作符的优先级为: 导航操作符(.) 一元符号(+,-) 乘(*),除(/) 加(+),减(-) 比较操作符,=, , =, , =, (不等), [NOT] BETWEEN, [NOT] LIKE, [NOT] IN, IS [NOT] NULL, IS [NOT] EMPTY, [NOT] MEMBER [OF] 逻辑操作符,NOT, AND, OR 你可以用BETWEEN操作符指定一个实体字段的范围。BETWEEN的语法是: 这里expression可以是一个字符串,算术或日期时间表达式。这里有几个使用BETWEEN操作符的实例。 SELECT t FROM Topic t WHERE t.postCount NOT BETWEEN ?1 AND ?2 IN 你可以利用IN比较操作符指定为一个状态字段指定一系列的值。你可以列出一个或多个字符串或参数值(基于位置或命名的),或者利用子查询动态的生成一系列的值。字符型,数字型,枚举型的状态字段可以用在IN操作符上。状态字段的类型必须与列表中的值的类型一致。IN操作符的语法为: 这里有几个例子。 SELECT f FROM Forum f WHERE f.type IN (1, 2) LIKE LIKE允许你根据部分值搜索字符串字段。JPQL用一个下划线(_)表示你搜索字符字符串中任一字符。在查询语句中可以用百分号(%)表示一系列字符,其它的字符代表他们本身。LIKE的一般格式为: 如果你必须在查询语句中使用下划线或百分号作为字面字符,使用ESCAPE格式。例如,你可以用forum.description like ‘QA\_%’ ESCAPE ‘\’。你必须在下划线或百分号前加入反反斜线符号人,并且在搜索字符串后面加入ESCAPE ‘\’语法。这里列出几个例子:‘tr_ck’可以匹配‘truck’和‘trick’, 但不能匹配‘trucker’。 ‘tr%’可以匹配‘truck’, ‘tractor’, ‘trick’, 等等。 ‘tr_ck%’可以匹配‘truck’, ‘trick’, 和‘trucker’。 如果你想搜索字符串_hello,你的查询语句应该是这样的: ESCAPE ‘\’告诉数据库,“我正在一个转义字符(\)上使用反斜线

文档评论(0)

gk892289 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档