当前位置: 首页 > news >正文

第二百二十节 JPA教程 - JPA 实体管理器删除示例

JPA教程 - JPA 实体管理器删除示例

我们可以使用JPA中的EntityManager来删除一个实体。

在下面的代码中,我们首先通过使用EntityManager中的find方法从数据库获取person对象,然后调用remove方法并传递person对象引用。

    Person emp =  em.find(Person.class, 1L);if (emp != null) {em.remove(emp);}

例子

下面的代码来自Person.java。

package cn.w3cschool.common;
import static javax.persistence.FetchType.LAZY;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;@Entity
@Table(name="EMP")
public class Person {@Id@Column(name = "EMP_ID")private long id;@Basicprivate String name;private String surname;@Lob @Basic(fetch=LAZY)private byte[] picture;public Person() {}public Person(String name, String surname) {this.name = name;this.surname = surname;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSurname() {return surname;}public void setSurname(String surname) {this.surname = surname;}public byte[] getPicture() {return picture;}public void setPicture(byte[] picture) {this.picture = picture;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", surname=" + surname + "]";}
}

下面的代码来自PersonDaoImpl.java。

package cn.w3cschool.common;import java.util.List;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional
public class PersonDaoImpl {public void test(){Person p1 = new Person("Tom", "Smith");p1.setId(1L);p1.setPicture("asdf".getBytes());Person p2 = new Person("Jack", "Kook");p2.setId(2L);p1.setPicture("www.w3cschool.cn".getBytes());save(p1);save(p2);listAll();Person emp =  em.find(Person.class, 1L);if (emp != null) {em.remove(emp);}listAll();}private void listAll(){List<Person> persons = getAll();for (Person person : persons) {System.out.println(person);}}@PersistenceContextprivate EntityManager em;public Long save(Person person) {em.persist(person);return person.getId();}public List<Person>getAll() {return em.createQuery("SELECT p FROM Person p", Person.class).getResultList();}}

下载 EntityManager_Remove.zip

上面的代码生成以下结果。

以下是数据库转储。

Table Name: EMPRow:Column Name: EMP_ID,Column Type: BIGINT:Column Value: 2Column Name: NAME,Column Type: VARCHAR:Column Value: JackColumn Name: PICTURE,Column Type: BLOB:Column Value: nullColumn Name: SURNAME,Column Type: VARCHAR:Column Value: Kook

从数据库转储中,我们可以看到从数据库中删除id为1的Person实体。


 

http://www.lryc.cn/news/431490.html

相关文章:

  • [⁠TypeError⁠]‍ {message: “Cannot read property ‘‘ of undefined“}
  • NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001
  • 项目在运行时,浏览器控制台出现 Uncaught ReferenceError: globalThis is not defined
  • 图中点的层次
  • ansible+awx搭建
  • linux环境下安装配置go环境
  • 可交互、会学习、自成长机器人——李德毅院士
  • Redis发布订阅PUB/SUB
  • Scratch教师节 —— 感恩教师节
  • 【60天备战软考高级系统架构设计师——第五天:需求分析方法与工具】
  • 【Hot100算法刷题集】哈希-01-两数之和(暴力枚举再优化,也不是哈希表的对手)
  • 基于.NET6的WPF基础总结(上)
  • Nuxt3入门:资源文件(第2节)
  • 企业微信中嵌套的h5应用调用微信扫码功能
  • Excel如何把表格变成图表
  • HTTP 三、http在springboot中得应用
  • Java秋招面经(网搜版)
  • 【Android】Material Design编写更好的UI
  • 剪辑视频,这四大工具助你一臂之力!
  • 基于单片机的热成像测温显示系统设计
  • CSS系列之Float浮动(二)
  • macos下的 sed命令安装与使用 gnu-sed
  • RLC(电阻、电感、电容)
  • 语音测试(一)ffmpeg视频转音频
  • 计算机网络八股文之TCP协议
  • 【linux】linux中如何通过stress进行压力测试,原理解析与应用实战
  • python用波形显示udp数据实现一个模拟示波器
  • 开源通用验证码识别OCR —— DdddOcr 源码赏析(二)
  • 【个人笔记】VCS工具与命令
  • 面试进去8分钟就出来了,问的问题有点变态。。。