使用JPA和@NamedQueries的Spring数据

如果在JPA实体上使用Spring Data和@NamedQuery批注,则可以使用spring数据存储库以更方便的方式轻松使用它们。

在先前的博客中,我们使用spring boot和docker 创建了spring数据项目。 我们将使用相同的项目并增强存储库的功能。

我们将实现一个命名查询,该查询将仅在雇员的姓氏与指定的字符数相等时才提取雇员。

package com.gkatzioura.springdata.jpa.persistence.entity;import javax.persistence.*;/*** Created by gkatzioura on 6/2/16.*/
@Entity
@Table(name = "employee", schema="spring_data_jpa_example")
@NamedQuery(name = "Employee.fetchByLastNameLength",query = "SELECT e FROM Employee e WHERE CHAR_LENGTH(e.lastname) =:length "
)
public class Employee {@Id@Column(name = "id")@GeneratedValue(strategy = GenerationType.SEQUENCE)private Long id;@Column(name = "firstname")private String firstName;@Column(name = "lastname")private String lastname;@Column(name = "email")private String email;@Column(name = "age")private Integer age;@Column(name = "salary")private Integer salary;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastname() {return lastname;}public void setLastname(String lastname) {this.lastname = lastname;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSalary() {return salary;}public void setSalary(Integer salary) {this.salary = salary;}
}

请特别注意查询名称和我们遵循@ {EntityName}。{queryName}的约定。
然后,将方法添加到我们的spring数据存储库中。

package com.gkatzioura.springdata.jpa.persistence.repository;import com.gkatzioura.springdata.jpa.persistence.entity.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;import java.util.List;/*** Created by gkatzioura on 6/2/16.*/
@Repository
public interface EmployeeRepository extends JpaRepository<Employee,Long>, EmployeeRepositoryCustom {List<Employee> fetchByLastNameLength(@Param("length") Long length);
}

最后但并非最不重要的一点是向我们的控制器添加一些功能。

package com.gkatzioura.springdata.jpa.controller;import com.gkatzioura.springdata.jpa.persistence.entity.Employee;
import com.gkatzioura.springdata.jpa.persistence.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** Created by gkatzioura on 6/2/16.*/
@RestController
public class TestController {@Autowiredprivate EmployeeRepository employeeRepository;@RequestMapping("/employee")public List<Employee> getTest() {return employeeRepository.findAll();}@RequestMapping("/employee/filter")public List<Employee> getFiltered(String firstName,@RequestParam(defaultValue = "0") Double bonusAmount) {return employeeRepository.getFirstNamesLikeAndBonusBigger(firstName,bonusAmount);}@RequestMapping("/employee/lastnameLength")public List<Employee> fetchByLength(Long length) {return employeeRepository.fetchByLastNameLength(length);}}

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2017/03/spring-data-jpa-namedqueries.html

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

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

相关文章

vs无法写入量的大数据_一个每天服务数万人的企业食堂:自助餐按重计价,大数据支持食材预备量...

钱江晚报小时新闻记者 祝瑶 昨天下午6点多&#xff0c;钱报记者来到杭州阿里巴巴总部。这里共有5个员工食堂&#xff0c;几乎覆盖了全国各地的口味&#xff0c;每天为数万阿里人服务。其中&#xff0c;最当红的是2号食堂&#xff0c;除了有丰俭由人的自助餐区&#xff0c;还有十…

6号板编译失败找不到arm-none-linux-gnueabi-gcc

明明已经添加到/etc/environment 安装sudo apt-get install lib32z1 lib32ncurses5转载于:https://www.cnblogs.com/xpylovely/p/10817240.html

tf.train.Saver

将训练好的模型参数保存起来&#xff0c;以便以后进行验证或测试&#xff0c;这是我们经常要做的事情。tf里面提供模型保存的是tf.train.Saver()模块。 模型保存&#xff0c;先要创建一个Saver对象&#xff1a;如 savertf.train.Saver() 在创建这个Saver对象的时候&#xff…

Neo4j:空值如何工作?

我时不时地发现自己想将CSV文件导入Neo4j&#xff0c;而我总是对如何处理可能潜伏在其中的各种空值感到困惑。 让我们从一个没有CSV文件的示例开始。 考虑以下列表&#xff0c;以及我尝试仅返回空值的尝试&#xff1a; WITH [null, "null", "", "Ma…

楼层钢筋验收会议纪要_钢筋施工质量通病防治

一、钢筋原材1、钢筋表面出现黄色浮锈&#xff0c;严重转为红色&#xff0c;日久后变成暗褐色&#xff0c;甚至发生鱼鳞片剥落现象。图片原因保管不良&#xff0c;受到雨雪侵蚀&#xff0c;存放期长&#xff0c;仓库环境潮湿&#xff0c;通风不良。防 治 措 施1、钢筋原料应存放…

simulink代码生成(一)——环境搭建

一、安装C2000的嵌入式环境&#xff1b; 点击matlab附加功能&#xff0c; 然后搜索C2000&#xff0c;安装嵌入式硬件支持包&#xff1b;点击安装即可&#xff1b;&#xff08;目前还不知道破解版的怎么操作&#xff0c;目前我用的是正版的这样&#xff0c;完全破解的可能操作…

五步法颈椎病自我按摩图解

​​1.揉捏颈、肩、臂 操作&#xff1a;自我按摩时取坐位。拇指张开&#xff0c;其余四指并拢&#xff0c;虎口相对用力&#xff0c;自枕部开始沿颈椎棘突两旁的肌肉向下揉捏&#xff0c;至上背部手能摸到之处为止。反复揉捏3分钟&#xff0c;然后以相同手法揉捏患侧上肢和颈部…

tf.one_hot

tf.one_hot(indices,#输入&#xff0c;这里是一维的depth,# one hotdimension.on_valueNone,#output 默认1off_valueNone,#output 默认0axisNone,#根据我的实验&#xff0c;默认为1dtypeNone,nameNone) 测试程序&#xff0c;一般说&#xff0c;有几类&#xff0c;depth等于分类…

使用get set方法添减属性_头皮银屑病“克星”使用方法,你GET了吗?

相信小伙伴们最近都了解了治疗头皮银屑病需要使用专业剂型。但...方法不对&#xff0c;心血白费。头皮银屑病专用剂型的正确使用方法&#xff0c;你真的知道吗&#xff1f;快来和利奥娜一起&#xff0c;Get√正确的使用方法吧&#xff01;适合头皮银屑病的专用药剂1.复方制剂卡…

spring hsqldb_在Spring中嵌入HSQLDB服务器实例

spring hsqldb我一直在愉快地使用XAMPP进行开发&#xff0c;直到不得不将其托管在可通过Internet访问的某个地方&#xff0c;供客户端进行测试和使用。 我有一个仅具有384 RAM的VPS&#xff0c;并且需要快速找到方法&#xff0c;因此决定将XAMPP安装到VPS中。 由于内存较低&…

线性回归,logistic回归和一般回归

http://www.cnblogs.com/riskyer/p/3217601.html转载于:https://www.cnblogs.com/focus-z/p/10822757.html

double小数点后最多几位_基金理财买入后,不断亏损,是最多本金亏光,还是会出现负值...

投资基金不会把本金亏光&#xff0c;更不会倒贴钱&#xff0c;基金是一篮子股票&#xff0c;个别股票或许有黑天鹅事件&#xff0c;不可能全部同时出现&#xff0c;持续亏损的话&#xff0c;可能最后面临清盘&#xff0c;有结算流程&#xff0c;会将剩下的份额折算到投资者的账…

tf.layers.flatten

flatten( inputs, nameNone) 参数说明如下&#xff1a; inputs&#xff1a;必需&#xff0c;即输入数据。name&#xff1a;可选&#xff0c;默认为 None&#xff0c;即该层的名称。

JUnit 5 –参数化测试

JUnit 5令人印象深刻&#xff0c;尤其是当您深入研究扩展模型和体系结构时 。 但是从表面上讲&#xff0c;编写测试的地方&#xff0c;开发的过程比革命的过程更具进化性 – JUnit 4上没有杀手级功能吗&#xff1f; 幸运的是&#xff0c;至少有一个&#xff1a;参数化测试。 JU…

RMQ问题-ST表倍增处理静态区间最值

简介 ST表是利用倍增思想处理RMQ问题&#xff08;区间最值问题&#xff09;的一种工具。 它能够做到O(nlogn)预处理&#xff0c;O(1)查询的时间复杂度&#xff0c;效率相当不错。 算法 1.预处理 ST表利用倍增的思想。以洛谷的P3865作为例子。我们需要查询某一区间的最大值。 我…

tf.layers.dropout

dropout 是指在深度学习网络的训练过程中&#xff0c;对于神经网络单元&#xff0c;按照一定的概率将其暂时从网络中丢弃&#xff0c; 可以用来防止过拟合&#xff0c;layers 模块中提供了 tf.layers.dropout() 方法来实现这一操作&#xff0c;定义在 tensorflow/python/layers…

nginx是干嘛用的_nginx小技巧 -非root身份运行nginx

简直罪过&#xff0c;写这篇文章完全是一场毫无意义的口水仗引起的&#xff0c;我这人就这样&#xff0c;喜欢拿事实说话&#xff0c;而不是一句话说的让人摸不着头脑&#xff01;下载源码文件&#xff1a;wget http://nginx.org/download/nginx-1.16.1.tar.gz解压&#xff1a;…

pooling池化

pooling&#xff0c;即池化&#xff0c;layers 模块提供了多个池化方法&#xff0c;这几个池化方法都是类似的&#xff0c;包括 tf.layers.max_pooling1d()、tf.layers.max_pooling2d()、tf.layers.max_pooling3d()、tf.layers.average_pooling1d()、tf.layers.average_pooling…

mysql 数据迁移_MySQL海量数据迁移

数据库迁移本主前一段时间写毕业设计主要使用MySQL&#xff0c;紧锣密鼓的开发了将近一个多月&#xff0c;项目数据层、接口层、数据采集层已经开发完成&#xff0c;算法还在不断的优化提速&#xff0c;由于请了几位大佬帮我做Code Review&#xff0c;所以不得已购买了一个阿里…

数组中重复的数字

解决问题思路1. 代码实现&#xff1a; package j2;import java.util.Arrays;/*** Created by admin on 2019/5/8.*/ public class FindDuplicate {public static void duplicate(int[] numbers,int length,int[]duplication){//边界条件的判断if (numbers null || length0) {r…