Java持久性API(JPA)第4讲——删除和修改.doc

JPA加载_更新_删除对象及使用JPQL语句进行查询 立即下载
 
Java持久性API(JPA)——删除和修改
目标:使用JPA完成删除和修改功能。
主要内容包括:
u       根据主键查询
u       删除信息
u       修改信息
因为删除功能和修改功能都是对已有的实体进行操作,通常需要先得到实体,然后对实体进行操作,得到实体需要根据主键进行查询。所以在介绍删除和修改信息之前先介绍如何根据主键查询。
1、根据主键查询
在第3次课中介绍了使用Query查询信息。如果使用上次课介绍的方法也可以完成根据主键的查询。但是,因为根据主键的查询比较特殊,所在JPA中提供了特殊的处理方式。下面通过实例介绍如何根据主键进行查询。
例:根据用户ID查询用户信息,假设用户ID使用字符串变量“userid”表示,用户信息对应的实体类是Userinfo,该实体类就是前3次课中使用的实体类。
Userinfo user = em.find(Userinfo.class,userid);
方法的第一个参数是实体类,第二个参数是查询的主键,返回值是查询到的实体。如果实体不存在返回null。
具体用法在后面的例子中介绍。
2、删除信息
信息删除通常是在查询的基础上,选择要删除的信息,然后删除。信息删除的基本过程如下:
n         用户选择要删除的用户;
n         控制器介绍到请求之后,调用业务模型完成删除。
根据以上过程,需要编写3个文件:
n         模型部分,在会话Bean中添加“删除用户”的方法;
n         在用户列表界面userlist.jsp添加“删除”超链;
n         编写控制器DeleteUserServlet.java,完成删除功能的控制。
操作过程如下:
1) 在会话Bean中添加“删除用户”的方法
首先,需要在业务接口中声明,在UserManagerRemote.java中添加如下方法声明:
   public void deleteUser(String userid);
然后,在Bean类中实现方法,在UserManagerBean.java中添加如下代码:
      // 根据主键删除用户
      public void deleteUser(String userid){
          Userinfo user = em.find(Userinfo.class,userid);
          em.remove(user);
      }
首先使用EntityManager对象em的find方法查找到实体,第一个参数是实体的类型,第二个参数是要查找的实体的主键。然后调用EntityManager的remove方法删除实体。
与直接使用JDBC完成删除相比要简单。
2)在userlist.jsp中添加删除超链
修改<c:forEach>中的代码,红色部分是添加的代码:
            <c:forEach varStatus="status" var="user" items="${userlist}">
                <tr>
                    <td>${status.index+1}</td>
                    <td>${user.userid}</td>
                    <td>${user.username}</td>
                    <td>
                        <c:if test="${user.usertype==/"0/"}">
                            普通用户
                        </c:if>
                        <c:if test="${user.usertype==/"1/"}">
                            管理员
                        </c:if>
                    </td>
                    <td>
                        <a href="DeleteUserServlet?userid=${user.userid}">删除</a>
                    </td>
                </tr>
            </c:forEach>
因为在删除的时候需要根据主键进行删除,需要传递当前用户的userid,这里使用问号+参数的形式。也可以使用按钮来实现,如果使用按钮,可以使用隐藏域传递需要删除的信息的userid。
3)编写用于删除的控制器DeleteUserServlet.java
该控制器完成的主要功能如下:
n         获取用户选择的userid;
n         调用会话Bean的deleteUser方法完成删除;
n         跳转到显示用户信息的Servlet:FindAllUserServlet。
参考代码如下(红色部分是使用向导之后生成的代码):
/*
 * DeleteUserServlet.java
 *
 * Created on 2007年5月28日, 上午3:21
 */
 
package jpa.web;
 
import java.io.*;
import java.net.*;
 
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.EJB;
import jpa.UserManagerRemote;
/**
 *
 * @author Administrator
 * @version
 */
public class DeleteUserServlet extends HttpServlet {
    @EJB
    UserManagerRemote user;
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        // 获取要删除的用户ID
        String userid = request.getParameter("userid");
       
        // 调用删除用户的方法
        user.deleteUser(userid);
       
        // 专向用户列表界面
        RequestDispatcher rd = request.getRequestDispatcher("FindAllUserServlet");
        rd.forward(request,response);
    }
       
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
 
}
4)部署、测试
3、修改信息
下面以用户信息修改为例介绍信息修改,修改信息的基本过程如下:
n         选择要修改信息的用户;
n         把要修改的用户信息显示在表单元素中;
n         用户根据需要修改信息,然后提交;
n         对用户提交的信息进行修改。
涉及两个过程:根据用户的选择,显示要修改的用户的信息;用户修改之后提交给服务器处理。
使用MVC模式,分别进行设计:
n         首先,考虑模型部分,模型部分包括两个功能:
u       根据userid查询用户信息;
u       修改用户信息
n         其次,是视图部分:
u       选择要修改的用户;
u       先是要修改的用户信息,并在此界面上修改;
u       修改后专向用户列表界面。
n         最后是控制器,包括两部分:
u       根据userid查询用户信息的控制器;
u       使用用户输入的信息进行。
下面分别介绍。
1) 在会话Bean中添加业务方法
首先在业务接口中声明方法,包括根据userid查询用户的方法和修改用户信息的方法,方法的的定义如下:
    public Userinfo findUserById(String userid);
    public void updateUser(String userid,String username,String userpass,char usertype);
在Bean类中实现这两个方法,方法的参考代码如下:
      // 根据主键查询用户
      public Userinfo findUserById(String userid){
          return em.find(Userinfo.class,userid);
      }
      // 更新用户
      public void updateUser(String userid,String username,String userpass,char usertype){
          Userinfo user=em.find(Userinfo.class,userid);
          user.setUsername(username);
          user.setUserpass(userpass);
          user.setUsertype(usertype);
      }
根据主键查询用户信息的代码前面介绍过。更新用户,需要先查找到该用户,根据主键查找,之后使用set方法进行修改。上面的方法就完成了信息的修改。
2)在用户列表界面userlist.jsp上添加“修改”超链,修改<c:forEach>中的代码,修改后的代码如下(红色部分是添加的):
            <c:forEach varStatus="status" var="user" items="${userlist}">
                <tr>
                    <td>${status.index+1}</td>
                    <td>${user.userid}</td>
                    <td>${user.username}</td>
                    <td>
                        <c:if test="${user.usertype==/"0/"}">
                            普通用户
                        </c:if>
                        <c:if test="${user.usertype==/"1/"}">
                            管理员
                        </c:if>
                    </td>
                    <td>
                        <a href="DeleteUserServlet?userid=${user.userid}">删除</a>
                    </td>
                    <td>
                        <a href="FindUserByIdServlet?userid=${user.userid}">修改</a>
                    </td>
                </tr>
            </c:forEach>
3)编写根据主键查询用户信息的控制器FindUserByIdServlet.java,参考代码如下(红色部分是使用向导之后添加的代码):
/*
 * FindUserByIdServlet.java
 *
 * Created on 2007年5月28日, 上午3:21
 */
 
package jpa.web;
 
import java.io.*;
 
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.EJB;
import jpa.UserManagerRemote;
import jpa.Userinfo;
 
/**
 *
 * @author Administrator
 * @version
 */
public class FindUserByIdServlet extends HttpServlet {
    @EJB
    UserManagerRemote user;   
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        // 获取要修改的用户的ID
        String userid = request.getParameter("userid");
       
        // 调用根据主键查询用户的方法
        Userinfo userinfo = user.findUserById(userid);
       
        // 保存到request中,传递到页面
        request.setAttribute("userinfo",userinfo);
       
        // 转向修改界面
        RequestDispatcher rd = request.getRequestDispatcher("updateUser.jsp");
        rd.forward(request,response);
    }
   
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
4)编写修改界面updateUser.jsp,在查询到信息之后会跳转到信息修改界面,信息修改界面的参考代码如下:
<%@page contentType="text/html"%>
<%@page pageEncoding="gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
 
    <h1>JSP Page</h1>
    <form action="UpdateUserServlet" method="POST">
     用户ID:${userinfo.userid}
         <input type="hidden" name="userid" value="${userinfo.userid}" /><br>
     用户名:<input type="text" name="username" value="${userinfo.username}" /><br>
     口令:<input type="password" name="userpass" value="${userinfo.userpass}" /><br>
        权限:<select name="usertype">
            <option value="0" <c:if test="${userinfo.usertype=='0'}">
               selected</c:if>>普通用户</option>
            <option value="1" <c:if test="${userinfo.usertype=='1'}">
               selected</c:if>>管理员</option>
        </select><br>
        <input type="submit" value="修改" /><input type="reset" value="重置" />
    </form>
   
    </body>
</html>
代码解释:
n         用户ID不能修改,但是修改信息的时候需要根据ID修改,所以使用隐藏域传递。
n         使用表达式语言,通过value对输入框赋值。
n         对于下拉框稍微复杂一些:使用<c:if>判断,然后确定选择哪一个。
5)编写修改的控制器:UpdateUserServlet.java,代码如下(红色部分是使用向导生成之后添加的代码):
/*
 * UpdateUserServlet.java
 *
 * Created on 2007年5月28日, 上午3:23
 */
 
package jpa.web;
 
import java.io.*;
import java.net.*;
 
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.EJB;
import jpa.UserManagerRemote;
 
/**
 *
 * @author Administrator
 * @version
 */
public class UpdateUserServlet extends HttpServlet {
    @EJB
    UserManagerRemote user;   
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        // 获取修改后的信息
        String userid = request.getParameter("userid");
        String username = request.getParameter("username");
        String userpass = request.getParameter("userpass");
        String usertype = request.getParameter("usertype");
       
        // 调用修改信息的方法
        user.updateUser(userid,username,userpass,usertype.charAt(0));
       
        // 专向用户列表界面
        response.sendRedirect("FindAllUserServlet");
    }
   
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
代码比较简单,不再解释。
4、小结
信息的修改和删除,通常都是先查找到实体,根据主键查询,使用EntityManager的find方法,第1个参数是要查找的实体类,第2个参数是要查找的实体类的主键。
信息的删除,通常先查找到实体,然后调用EntityManager的remove方法删除,参数是要删除的实体。
信息的修改,通常先查找到实体,然后调用实体的set方法进行修改。
关于EntityManager的方法参考书上357页。

 

更多内容参考:《Java EE 5实用教程》

jpa注解doc文档 Jpa注解的各种jpa注释详解 立即下载

相关推荐

手把手教你用海康威视相机+DLP4500搭建双目结构光系统(附避坑指南)

本文详细介绍了如何使用海康威视相机和DLP4500搭建双目结构光三维测量系统,涵盖硬件选型、系统搭建、双目标定及三维重建等关键步骤。特别针对预算有限的开发者和实验室团队,提供实用的避坑指南和优化技巧,帮助实现0.02mm的高精度测量。

weixin_42526087的博客 462

JPA持久化API,针对数据库的增删改查(三):管理对象的方法:根据主键加载实体;更新实体;删除实体;合并实体;刷新实体

1.根据主键加载实体 程序可以通过find来加载一个实体,这种加载类似于EJB2中EntityEJB的findByPrimary方法, 可以根据实体的标识属性值加载实体——其实质就是从数据表加载一条记录 与find方法类似的还有getReference方法,它可以根据实体主键值来加载实体。 二者区别是;当调用find方法获取实体时,如果当前持久化上下文,底层数据库都不存在该主键对应的实体, find方法将会返回null;getReference方法返回使用了代理模式,当程序调用getReferen

weixin_46055386的博客 481

使用Docker搭建SearXNG搜索引擎

【代码】使用Docker搭建SearXNG搜索引擎。

janthinasnail的博客 1172

JPA Doc On Oracle

http://docs.oracle.com/javaee/5/tutorial/doc/bnbti.html#bnbtk

炎黄的专栏 549

【论文阅读】2021-(Pidinet)Pixel Difference Networks for Efficient Edge Detection

文章目录摘要1. Introduction 摘要 motivations: 基于CNN的边缘检测的高性能是通过一个大的预训练CNN主干来实现的,该主干占用大量内存和能量。传统边缘检测器(如Canny、Sobel和LBP)很少被研究。 contributions: 提出了一种简单、轻量级但有效的架构,称为像素差分网络(PiDiNet),用于有效的边缘检测。PiDiNet采用了新颖的像素差卷积,将传统的边缘检测算子集成到现代CNN中流行的卷积运算中,以增强任务性能。 experiments: 在BSDS500

轻舟的万重重山 1万+

【keras】走近VGG16卷积神经网络

        VGG16是一个16层的卷积神经网络模型,输入数据的维度为224*224*3,即长宽均为224像素的RGB彩色图片,VGG16模型的权重由ImageNet训练而来。由于其具有简单实用的优点,因此,在图像分类和目标检测任务中得到了较为广泛的应用。 1.卷积神经网络的基本概念 1.1卷积         简单的将其理解为一种数学运算,具体的计算过程如下图所示:       ...

XYZ 1万+

springdata+jpa service一个方法同一事物中执行delete和insert

场景: 在service中提供的一个方法是先将符合条件的数据全部删除,然后再将新的条件全部插入数据库中,这个场景需要保证service中执行两步: 删除 插入 这两步自然是在同一个事务中完成才是一个完整的操作,对于这个场景: dao层:在jpa中使用delete操作,需要加上@Modifying、@Transactional这两个注解,因为,@Modifying可以通知SpringData...

小小小怪兽_ 5251

【ZYNQ】OV5640 图像采集与显示

OV5640 是豪威(OmniVision)半导体公司推出的高性能的 CMOS 数字图像传感器,支持最高 500 万像素图像采集,支持 RAW RGB、RGB565、YCbCr422 等图像格式输出,可应用于手机、平板等电子设备。本文主要介绍如何使用 Zynq 驱动 OV5640 摄像头进行图像采集,并通过 HDMI 实时显示。

洋洋Young的博客 1433

注意!注意!Jpa的自动持久化(Set)问题处理

1、问题出现(这个问题出现在JPA框架中,它查询的数据会自动持久化)有一天,我们XX平台的XX系统需要查询某张数据库表的数据。然后同学A实现方式如下。代码看似没有问题,无非就是把对应Bean查询出来,然后对Bean的某个字段进行Set赋值返回给前端使用。# 2、问题暴露上面的代码放在其他持久化框架可能不会出现问题。但是这是JPA的框架中啊,所以出现的问题就是:数据库查询出来的Bean进行Set方法设置值后,等到方法执行完,那么JPA会自动帮你把这个Bean的数据持久化到数据库中。

weixin_39557697的博客 841

「JS逆向三百例」JS逆向HIKVISION-视频监控的前端密码加密

本文详细分析了HIKVISION-海康威视监控前端登录过程中密码的加密机制,通过逆向工程解析了其 JavaScript 加密逻辑,重点研究了HIKVISION-海康威视监控的前端密码SHA256加密算法的实现。基于逆向分析结果,使用 Python 模拟了HIKVISION-海康威视监控的登录流程,最终实现了自动化登录功能。本文旨在为安全研究人员提供技术参考,帮助理解前端加密机制,并强调技术研究的合法性和合规性。

布啦啦 1100

把表的每一次改动都记下来:SAP 表变更日志 DBTABLOG/DBTABPRT 与 SCU3 全面解析

摘要:SAP系统提供了数据库表变更日志功能(SCU3/DBTABLOG),用于追踪关键配置表的变更历史。该功能通过profile参数rec/client和表级技术设置双重开关控制,能记录谁在何时修改了哪些数据。与业务变更凭证(CDHDR/CDPOS)和应用日志(SLG1)不同,表变更日志提供技术层面的审计线索,适用于快速定位生产事故中的异常数据变更。但需注意其限制:不支持超宽表和大批量变更,且可能引发性能问题。建议将表变更日志与业务变更凭证、应用日志结合使用,构建完整的审计追踪体系。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1693

Spring Data Jpa 单表多条件删除配置

Spring Data Jpa 单表多条件删除配置 场景 现在有一张表User表,里面有id,groupId,userId; 已知groupId和userId,想删除一条数据的方式 根据groupId和userId删除一条记录 通过groupId查询,然后再用userId进行匹配确定 SpringData Jpa提供多条件删除,配置如下: <meth...

weixin_30588675的博客 860

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛

15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。

qq_42135020的博客 1087

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JPA 内置方法使用(保存方法、删除方法、查询方法)

1 保存方法 1.1 save() 保存单条数据,存在则更新,不存在则插入。 /** * 保存用户 * * @param userEntity 用户信息 * @return */ public UserEntity save(UserEntity userEntity) { return userRepository.save(userEntity); } 1.2saveAll() 批量保存数据,存在则更.

旭东怪的博客 3337

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jpa实现根据条件删除_SpringBoot系列教程JPA之delete使用姿势详解

常见db中的四个操作curd,前面的几篇博文分别介绍了insert,update,接下来我们看下delete的使用姿势,通过JPA可以怎样删除数据一般来讲是不建议物理删除(直接从表中删除记录)数据的,在如今数据就是钱的时代,更常见的做法是在表中添加一个表示状态的字段,然后通过修改这个字段来表示记录是否有效,从而实现逻辑删除;这么做的原因如下物理删除,如果出问题恢复比较麻烦无法保证代码一定准确,在出...

weixin_39963096的博客 6159

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java 级联删除_JPA级联删除

本篇文章帮大家学习JPA级联删除,包含了JPA级联删除使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。级联移除用于指定如果父实体被移除,则其所有相关实体也将被移除。 以下语法用于执行级联删除操作 -@OneToOne(cascade=CascadeType.REMOVE)JPA级联删除示例在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执...

weixin_39878247的博客 816

Hibernate知识点

    软件开发的分层思想: 三层架构:  数据表现层业务逻辑层数据持久层SUN的桌面应用Swing AWT普通Java类JDBCSUN的WEB基本应用JSP

李蓝箫 3438

@GeneratedValue 与 @GenericGenerator

一、JPA通用策略生成器  通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,  其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法,  JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出.  Java代码   @T

Yang_Hehui的专栏 1662

一步步实现:JPA的基本增删改查CRUD(jpa基于hibernate)

一步步:实现JPA的基本增删改查CRUD(jpa基于hibernate)

Java仗剑走天涯 5万+

关于JPA的删除和修改的操作

(1)可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作。 注意: JPQL 不支持使用 INSERT; (2)在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作 (3)UPDATE 或 DELETE 操作需要使用事务,此时需要定义 Service 层,在 ...

qq_37458496的博客 1万+

JPA--增加删除

JPA--增加删除   编写原生的sql插入删除语句一定要加入事务!!!!  @Modifying  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)  @Query(value = “insert into topic_good values(?1,?2)”,nativeQuer...

1395

jpa 删除

JPA查询 修改 删除 注释

fighter_2020的博客 2004
上一篇: Java持久性API(JPA)第3讲——使用查询
下一篇: HashMap对象的遍历
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值