第二百五十八节 JPA教程 - JPA查询选择两个实体示例
JPA教程 - JPA查询选择两个实体示例
以下JPQL从两个实体中选择。
List l = em.createQuery("SELECT d, m FROM Department d, Professor m WHERE d = m.department").getResultList();
例子
以下代码来自Professor.java。
package cn.w3cschool.common;import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;@Entity
public class Professor {@Idprivate int id;private String name;private long salary;@Temporal(TemporalType.DATE)private Date startDate;@OneToOneprivate Address address;@OneToMany(mappedBy="employee")private Collection<Phone> phones = new ArrayList<Phone>();@ManyToOneprivate Department department;@ManyToOneprivate Professor manager;@OneToMany(mappedBy="manager")private Collection<Professor> directs = new ArrayList<Professor>();@ManyToMany(mappedBy="employees")private Collection<Project> projects = new ArrayList<Project>();public int getId() {return id;}public void setId(int empNo) {this.id = empNo;}public String getName() {return name;}public void setName(String name) {this.name = name;}public long getSalary() {return salary;}public void setSalary(long salary) {this.salary = salary;}public Date getStartDate() {return startDate;}public void setStartDate(Date startDate) {this.startDate = startDate;}public Collection<Phone> getPhones() {return phones;}public void addPhone(Phone phone) {if (!getPhones().contains(phone)) {getPhones().add(phone);if (phone.getProfessor() != null) {phone.getProfessor().getPhones().remove(phone);}phone.setProfessor(this);}}public Department getDepartment() {return department;}public void setDepartment(Department department) {if (this.department != null) {this.department.getProfessors().remove(this);}this.department = department;this.department.getProfessors().add(this);}public Collection<Professor> getDirects() {return directs;}public void addDirect(Professor employee) {if (!getDirects().contains(employee)) {getDirects().add(employee);if (employee.getManager() != null) {employee.getManager().getDirects().remove(employee);}employee.setManager(this);}}public Professor getManager() {return manager;}public void setManager(Professor manager) {this.manager = manager;}public Collection<Project> getProjects() {return projects;}public void addProject(Project project) {if (!getProjects().contains(project)) {getProjects().add(project);}if (!project.getProfessors().contains(this)) {project.getProfessors().add(this);}}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address; }public String toString() {return "Professor " + getId() + ": name: " + getName() +", salary: " + getSalary() +", phones: " + getPhones() +", managerNo: " + ((getManager() == null) ? null : getManager().getId()) +", deptNo: " + ((getDepartment() == null) ? null : getDepartment().getId());}}
以下代码来自Address.java。
package cn.w3cschool.common;import javax.persistence.Entity;
import javax.persistence.Id;@Entity
public class Address {@Idprivate int id;private String street;private String city;private String state;private String zip;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getStreet() {return street;}public void setStreet(String address) {this.street = address;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getState() {return state;}public void setState(String state) {this.state = state;}public String getZip() {return zip;}public void setZip(String zip) {this.zip = zip;}public String toString() {return "Address id: " + getId() + ", street: " + getStreet() +", city: " + getCity() +", state: " + getState() +", zip: " + getZip();}}
下面的代码来自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(){prepareData();List l = em.createQuery("SELECT d, m FROM Department d, Professor m WHERE d = m.department").getResultList();for(Object p:l){System.out.println(p);}}private void prepareData(){Professor p = new Professor();p.setId(0);p.setName("TOM");Department d = new Department();d.setId(1);d.setName("Design");p.setDepartment(d);d.getProfessors().add(p);em.persist(p);em.persist(d);}@PersistenceContextprivate EntityManager em;
}
以下代码来自Phone.java。
package cn.w3cschool.common;import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;@Entity
public class Phone {@Idprivate long id;private String number;private String type;@ManyToOneProfessor employee;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getNumber() {return number;}public void setNumber(String phoneNo) {this.number = phoneNo;}public String getType() {return type;}public void setType(String phoneType) {this.type = phoneType;}public Professor getProfessor() {return employee;}public void setProfessor(Professor employee) {this.employee = employee;}public String toString() {return "Phone id: " + getId() + ", no: " + getNumber() +", type: " + getType();}
}
以下代码来自Project.java。
package cn.w3cschool.common;import java.util.ArrayList;
import java.util.Collection;import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.ManyToMany;@Entity
@Inheritance
public class Project {@Idprotected int id;protected String name;@ManyToManyprotected Collection<Professor> employees = new ArrayList<Professor>();public int getId() {return id;}public void setId(int projectNo) {this.id = projectNo;}public String getName() {return name;}public void setName(String projectName) {this.name = projectName;}public Collection<Professor> getProfessors() {return employees;}public void addProfessor(Professor employee) {if (!getProfessors().contains(employee)) {getProfessors().add(employee);}if (!employee.getProjects().contains(this)) {employee.getProjects().add(this);}}public String toString() {return getClass().getName().substring(getClass().getName().lastIndexOf(".")+1) + " no: " + getId() + ", name: " + getName();}
}
下面的代码来自Department.java。
package cn.w3cschool.common;import java.util.HashSet;
import java.util.Set;import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;@Entity
public class Department {@Idprivate int id;private String name;@OneToMany(mappedBy="department")private Set<Professor> employees = new HashSet<Professor>();public int getId() {return id;}public void setId(int deptNo) {this.id = deptNo;}public String getName() {return name;}public void setName(String deptName) {this.name = deptName;}public Set<Professor> getProfessors() {return employees;}public String toString() {return "Department no: " + getId() + ", name: " + getName();}
}
上面的代码生成以下结果。
![]()
以下是数据库转储。
Table Name: ADDRESSTable Name: DEPARTMENTRow:Column Name: ID,Column Type: INTEGER:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: DesignTable Name: PHONETable Name: PROFESSORRow:Column Name: ID,Column Type: INTEGER:Column Value: 0Column Name: NAME,Column Type: VARCHAR:Column Value: TOMColumn Name: SALARY,Column Type: BIGINT:Column Value: 0Column Name: STARTDATE,Column Type: DATE:Column Value: nullColumn Name: ADDRESS_ID,Column Type: INTEGER:Column Value: nullColumn Name: DEPARTMENT_ID,Column Type: INTEGER:Column Value: 1Column Name: MANAGER_ID,Column Type: INTEGER:Column Value: nullTable Name: PROJECTTable Name: PROJECT_PROFESSOR
相关文章:
第二百五十八节 JPA教程 - JPA查询选择两个实体示例
JPA教程 - JPA查询选择两个实体示例 以下JPQL从两个实体中选择。 List l em.createQuery("SELECT d, m FROM Department d, Professor m WHERE d m.department").getResultList();例子 以下代码来自Professor.java。 package cn.w3cschool.common;import java.…...
数据库三级模式结构
三级模式结构 1. 外模式(External Schema)——“用户看到的楼层”2. 概念模式(Conceptual Schema)——“图书馆的核心”3. 内模式(Internal Schema)——“图书馆的地下室”举例1. 概念模式的例子2. 外模式的…...
【小程序websocket最佳实践,有心跳和断线重连】
小程序websocket最佳实践,有心跳和断线重连 封装了WebSocketHandler类,用于管理websocket链接,保证链接的稳定和可靠,该类主要适用于小程序,但其设计思想和方法也适用于其他平台。 export default class WebSocketHa…...
自然资源部最新Nature正刊!!!
2024年8月21日,国际顶级期刊《Nature》发表了自然资源部第二海洋研究所李家彪院士为通讯作者,张涛为第一作者的论文“超慢速扩张加克洋中脊的高变化岩浆增生”。这一成果颠覆了国际海洋学术界半个多世纪以来一直认为的超慢速扩张洋中脊岩浆供给极度贫瘠的…...
git分支-创建、合并、删除
Git会将每次提交串成一条时间线,这条时间线就是一个分支。在最初,只有一个master分支 在目录下创建项目 对目录进行输入 项目被修改 创建dev分支 合并分支 删除dev分支...
Python:Spoonfed - (2-10) 激励选择脚本(搬砖)
https://www.patreon.com/posts/python-spoonfed-31572219 2019年11月15日 利用上一课的选择函数,我们现在可以拼凑出一些脚本(有一些事情我们还没有解释,但应该很容易理解)。以下代码将允许您选择当前所选对象的父对象、顶级对…...
VS Code Python 文件导入提示 xxx Module 不存在解决方式
VS Code Python 文件导入提示 xxx Module 不存在解决方式 引言正文如何打开 setting.json 文件引言 之前在 https://blog.csdn.net/u011699626/article/details/142612579?spm=1001.2014.3001.5501 一文中我们介绍了如何配置 VS code 中 Jupyter Notebook 的文件导入环境,这…...
Android中的Activity与Fragment:深入解析与应用场景
在Android应用开发中,Activity和Fragment是两个核心概念,它们各自扮演着不同的角色,共同构成了用户界面的基础。理解并熟练掌握这两个组件的使用,对于开发高效、灵活且用户友好的Android应用至关重要。本文将深入解析Activity与Fr…...
Flux【lora模型】【真人模型】:极致逼真,小红书真实风格|旅游拍照|景点打卡
大家好我是安琪!!! 今天和大家推荐一款基于Flux训练的真人写实的lora模型:Flux_小红书真实风格丨日常照片丨极致逼真。一看这个模型的命名,就可以猜测出以小红书日常真实拍摄的照片为数据集训练而来,该模型…...
python基础语法--顺序结构
Python中的顺序结构主要包括流程控制语句,如 if、while 和 for 语句。这些语句允许你在程序中定义不同的执行路径,从而根据条件或循环次数来改变代码的执行流程。下面详细介绍这些语句的使用方法和示例。 if 语句 if 语句用于根据某个条件来决定是否执…...
软件游戏运行缺少vcruntime140.dll怎么办?总结四种有效简单方法
1. 文件基本信息 1.1 定义与作用 vcruntime140.dll是Microsoft Visual C 2015 Redistributable Package的一部分,它包含了C运行时库,用于支持使用Visual C开发的Windows应用程序。这个动态链接库(DLL)文件提供了程序执行时所需的…...
(undone) 阅读 MapReduce 论文笔记
参考:https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf 摘要:简单介绍了 MapReduce 是在大型分布式系统上工作的 Introduction 的内容总结: 1.介绍背景:为什么我们需要分布式系统?MapReduce 的意义是哪些 2.简…...
sql注入工具升级:自动化时间盲注、布尔盲注
项目地址:https://github.com/iamnotamaster/sql-injecter 给我之前写的sql注入脚本进行了一些升级,此文章就是对升级内容的分析,升级内容如下: 使用占位符foo来填充payload里需要经常修改的部分 自动判断循环 支持爆破和二分查…...
字节C++抖音直播一面-面经总结
1、Python和C的区别,Python的程序执行过程是怎样的?C和C呢? 解释型-编译型 不用分号-用分号 自动垃圾回收-delete 相对较慢-执行速度快 丰富的库-标注模板库 .py-解释器-字节码-PVM-输出结果 c-c with class malloc-new 标准库-STL 不重载-函数重载和…...
浅谈stm32的GPIO引脚配置模式
STM32的GPIO(通用输入输出)引脚可以被配置为多种模式,以适应不同的应用场景。下面介绍一些一些常见的STM32 GPIO引脚模式: 模拟输入模式(Analog Input Mode):在这种模式下,GPIO引脚被…...
Meta Orion 原型的生产成本约为 10,000 美元
Orion Meta 是一项突破性的增强现实项目,展示了其迄今为止最先进的原型。经过多年的研究和数百万美元的开发,Meta 打造出了一款仅重 98 克的增强现实眼镜,能够将全息图投射到视线范围内的任何地方。这款眼镜由一个先进的输入系统驱动…...
MATLAB GUI设计原则与实践
MATLAB的图形用户界面(GUI)设计是一种强大的工具,用于创建交互式应用程序。良好的GUI设计不仅能够提升用户体验,还能提高应用程序的可用性和效率。本文将探讨MATLAB GUI设计的原则,并提供一些实用的代码示例。 1. GUI…...
电脑桌面显示不完整
UOS统信由于误操作,导致桌面放大了,桌面显示不完整,本文主要介绍如何恢复到正常的桌面。 文章目录 一、问题描述二、解决方案 一、问题描述 电脑使用过程中出现显示器只能显示部分画面,桌面图标异常变大,桌面随鼠标移…...
Spring Boot与观察者模式实现数据同步更新机制
在Spring Boot应用程序中实现观察者模式来同步更新数据是一种强大的设计方式,它可以帮助你构建响应式和松耦合的应用程序。观察者模式通常用于当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的基本概念 •Subject(被观察者):维护了一个…...
毕业设计选题:基于ssm+vue+uniapp的校园订餐小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
