Spring Data JPA 从入门到精通~SpEL表达式的支持

在 Spring Data JPA 1.4 以后,支持在 @Query 中使用 SpEL 表达式(简介)来接收变量。

SpEL 支持的变量

变量名

使用方式

描述

entityName

select x from #{#entityName} x

根据指定的Repository自动插入相关的entityName

有两种方式能被解析出来:

如果定了 @Entity 注解,直接用其属性名。

如果没定义,直接用实体的类的名称。

在以下的例子中,我们在查询语句中插入表达式:

@Entity("User")
public class User {@Id@GeneratedValueLong id;String lastname;
}
//Repository写法
public interface UserRepository extends JpaRepository<User, Long> {@Query("select u from #{#entityName} u where u.lastname = ?1")List<User> findByLastname(String lastname);
}

这个 SPEL 的支持,比较适合自定义的 Repository,如果想写一个通用的 Repository 接口,那么可以用这个表达式来处理:

@MappedSuperclass
public abstract class AbstractMappedType {…String attribute;
}
@Entity
public class ConcreteType extends AbstractMappedType { …
}
@NoRepositoryBean
public interface MappedTypeRepository<T extends AbstractMappedType> extends Repository<T, Long> {@Query("select t from #{#entityName} t where t.attribute = ?1")List<T> findAllByAttribute(String attribute);
}
public interface ConcreteRepository extends MappedTypeRepository<ConcreteType> { …
}

MappedTypeRepository 作为一个公用的父类,自己的 Repository 可以继承它,当调用 ConcreteRepository 执行 findAllByAttribute 方法的时候执行结果如下:

select t from ConcreteType t where t.attribute = ?1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由partition看窗口函数

最近要完成一个项目&#xff0c;有一个查询可难住了笔者&#xff0c;无论是子查询还是分组&#xff0c;都没弄出来&#xff0c;还是基础知识不行啊。不过呢&#xff0c;可以查资料&#xff0c;最后用一个窗口函数解决了问题。由于开始的数据库是Access&#xff0c;后来笔者导成…

AI版「盗梦空间」?谷歌大脑「世界模型」可实现在其梦境中对智能体进行训练

图源&#xff1a;pixabay原文来源&#xff1a;arXiv原文链接&#xff1a;https://arxiv.org/pdf/1803.10122.pdf作者&#xff1a;David Ha、Jurgen Schmidhuber「雷克世界」编译&#xff1a;嗯~是阿童木呀、KABUDA我们探索构建通用强化学习环境中的生成式神经网络模型。我们的世…

Linux文件空洞与稀疏文件

From&#xff1a;http://www.topjishu.com/8277.html From&#xff1a;http://blog.csdn.net/clamercoder/article/details/38361815 Linux_File_Hole_And_Sparse_Files 参考unix环境高级编程第三版 54页和90页&#xff01;&#xff01;&#xff01; ( 文件I/O章节 lseek…

Spring Data JPA 从入门到精通~@Modifying修改查询

学习思路一样&#xff0c;我们先看源码&#xff1a; public interface Modifying { //如果配置了一级缓存&#xff0c;这个时候用clearAutomaticallytrue,就会刷新hibernate的一级缓存了&#xff0c; 不然你在同一接口中&#xff0c;更新一个对象&#xff0c;接着查询这个对象…

java volatile修饰引用_关于volatile修饰引用类型的疑惑

volatile修饰引用类型能否保证可见性似乎一直没有一个定论&#xff0c;有的书中说仅能保证引用本身的可见性&#xff0c;下面用两段代码来验证&#xff1a;流程基本为一个线程死循环读取某个引用类型的某个变量的值&#xff0c;另一个线程修改这个值&#xff0c;观察线程是否结…

gridview 简单的分页

allowpaging 设为 true 然后 后台代码为&#xff1a; protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex e.NewPageIndex; Get_Gridview(); } Get_Gridview();是绑定gridview 的方法 转载于:https…

西人马聂泳忠:打造机器神经系统,成为中国的特斯拉

作者&#xff1a;于绍洋 来源&#xff1a;投资家网经常穿梭于几个城市&#xff0c;一手拉着行李箱&#xff0c;一手忙于回复工作上的事务&#xff0c;这可能已经成为西人马FATRI&#xff08;下称&#xff0c;西人马&#xff09;创始人聂泳忠博士的日常状态。他给人的第一印象…

Linux dd 命令

From&#xff1a;http://www.cnblogs.com/jikexianfeng/p/6103500.html Linux/UNIX: 使用 dd 命令创建 1GB 大小的二进制&#xff1a;http://www.linuxidc.com/Linux/2014-12/110147.htm 菜鸟教程 Linux dd命令&#xff1a;http://www.runoob.com/linux/linux-comm-dd.html …

Ubuntu 20.04 (Focal Fossa) 上安装RabbitMQ和Erlang,并配置管理员,并且修改数据目录

本脚本适用于在Ubuntu 20.04 (Focal Fossa) 上在线快速安装RabbitMQ和Erlang。 快速安装脚本&#xff1a; #!/bin/shsudo apt-get install curl gnupg apt-transport-https -y## Team RabbitMQs main signing key curl -1sLf "https://keys.openpgp.org/vks/v1/by-finge…

javascript indexOf函数

使用方法&#xff1a;strObj.indexOf(str,startIndex[可选]) 程序代码 其中strObj是必选项。String 对象或文字。 str是必选项。要在 String 对象中查找的子字符串。 startIndex是可选项。该整数值指出在 String 对象内开始查找的位置&#xff0c;从0开始。如果省略&#xff0c…

Spring Data JPA 从入门到精通~@Procedure 储存过程的查询方法

我们通过 Procedure 来介绍一下&#xff0c;JPA 对储存过程的支持。 &#xff08;1&#xff09;Procedure 源码如下&#xff1a; public interface Procedure {// 数据库里面储存过程的名称String value() default "";// 数据库里面储存过程的名称String procedure…

Nature 首度揭示大脑传递信息的真正逻辑

我们对于大脑的理解还停留在极为初步的阶段&#xff08;图片来源&#xff1a;Pixabay&#xff09;来源&#xff1a;生物360摘要&#xff1a;我们过去对于大脑处理信息的理解&#xff0c;其实是非常片面和不准确的。今日&#xff0c;一项重量级的研究刊登在了最新一期的《自然》…

Linux 用户 和 用户组 管理 (添加、删除、修改)及说明

From&#xff1a;http://www.cnblogs.com/xd502djj/archive/2011/11/23/2260094.html 鸟哥官网 Linux 帐号管理与 ACL 权限设定&#xff1a;http://linux.vbird.org/linux_basic/0410accountmanager.php 鸟哥官网&#xff08;简体中文&#xff09;&#xff1a;http://cn.linux.…

java+long是什么_Java中long的模运算符是什么? - java

如何在Java中找到两个长数值的模(&#xff05;)&#xff1f;我的代码说“整数太大”&#xff0c;后面跟我要修改的数字。我尝试将其强制转换很长时间&#xff0c;但没有成功。我是否必须将其转换为BigInteger并使用剩下的方法&#xff1f;谢谢。参考方案%运算符确实可以工作很长…

发现一个奇怪的问题: 不能把文件取名为 con

在 XP 系统下不能建立叫 con 的文件! 不知其他朋友也是这样? 转载于:https://www.cnblogs.com/del/archive/2009/04/26/1444175.html

IBM Watson将成为失败的投资?分析师眼里, IBM AI过度乐观, 夸大宣传

来源&#xff1a;36Kr 作者&#xff1a;石筱玉IBM Watson是在医疗领域最早布局的AI之一。在36Kr此前的盘点中&#xff0c;我们也知道Watson希望参与患者诊疗中的每一个步骤&#xff1a;导医用智能音箱、Watson诊断工具、住院看护辅助&#xff0c;还有病患心理疏导……Watson已…

Spring Data JPA 从入门到精通~@NamedQueries预定义查询

这种是预定义查询的一种形式 &#xff08;1&#xff09;在 Entity 下增加 NamedQuery 定义。 public interface NamedQuery {//query的名称&#xff0c;规则&#xff1a;实体.方法名&#xff1b;String name();//具体的JPQL查询语法String query(); } 需要注意&#xff0c;这…

jsp+servlet+java 实现统计在线人数

首先&#xff1a;jsp ----------------------------index.jsp 我要现在index.jsp 写一段 JavaScript <html> <head> <script type"text/javascript"> window.onbeforeunload function() //author: meizz { var n window.event.screenX - …

linux 文件系统详解

From&#xff1a;http://soysauce93.blog.51cto.com/7589461/1715655 From&#xff1a;http://blog.csdn.net/new0801/article/details/63687127 Linux 的虚拟文件系统(强烈推荐)&#xff1a;http://blog.csdn.net/heikefangxian23/article/details/51579971 鸟哥 Linux 磁盘…

国际互联网协会(ISOC)提出未来互联网十项原则

来源&#xff1a;腾讯研究院此前&#xff0c;国际互联网协会&#xff08;Internet Society&#xff0c;简称ISOC&#xff09;发布了题为《通往数字化未来之路&#xff08;Paths to Our Digital Future&#xff09;》的报告&#xff0c;就数字化未来的道路进行了探索。ISOC认为&…