JPA 系列教程21-JPA2.0-@MapKeyColumn

@MapKeyColumn

用@JoinColumn注解和@MapKeyColumn处理一对多关系

ddl语句

CREATE TABLE `t_employee` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;CREATE TABLE `t_employee_map` (`Employee_id` bigint(20) NOT NULL,`emp_value` varchar(255) DEFAULT NULL,`emp_key` varchar(255) NOT NULL,PRIMARY KEY (`Employee_id`,`emp_key`),CONSTRAINT `FK_k06nikcsc4pc9oasboix6uagw` FOREIGN KEY (`Employee_id`) REFERENCES `t_employee` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Employee

package com.jege.jpa;import java.util.HashMap;
import java.util.Map;import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MapKeyColumn;
import javax.persistence.Table;/*** @author JE哥* @email 1272434821@qq.com* @description:pojo模型*/
@Entity
@Table(name = "t_employee")
public class Employee {@Id@GeneratedValueprivate Long id;private String name;@ElementCollection// 生成的表的主键Map.key+EmployeeMap_id@CollectionTable(name = "t_employee_map")@MapKeyColumn(name = "emp_key")@Column(name = "emp_value")private Map<String, String> others = new HashMap<String, String>();public Employee() {}public Employee(String name) {this.name = name;}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 Map<String, String> getOthers() {return others;}public void setOthers(Map<String, String> others) {this.others = others;}}

JPA2Test

package com.jege.jpa;import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;public class JPA2Test {private static EntityManagerFactory entityManagerFactory = null;private EntityManager entityManager = null;@BeforeClasspublic static void setUpBeforeClass() throws Exception {entityManagerFactory = Persistence.createEntityManagerFactory("com.jege.jpa");}@Beforepublic void setUp() throws Exception {entityManager = entityManagerFactory.createEntityManager();// Session}@Testpublic void persist() throws Exception {Employee employee = new Employee();employee.setName("je-ge");employee.getOthers().put("home", "beijing");employee.getOthers().put("work", "shanghai");entityManager.getTransaction().begin();entityManager.persist(employee);entityManager.getTransaction().commit();}@Testpublic void find() throws Exception {persist();entityManager.clear();Employee employee = entityManager.find(Employee.class, 1L);System.out.println(employee.getName());System.out.println(employee.getOthers());}@Afterpublic void tearDown() throws Exception {if (entityManager != null && entityManager.isOpen())entityManager.close();}@AfterClasspublic static void tearDownAfterClass() throws Exception {if (entityManagerFactory != null && entityManagerFactory.isOpen())entityManagerFactory.close();}}

其他关联项目

  • JPA 系列教程20-JPA2.0-@CollectionTable
    http://blog.csdn.net/je_ge/article/details/53998548

源码地址

https://github.com/je-ge/jpa

如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。您的支持将鼓励我继续创作!谢谢!
微信打赏
支付宝打赏

转载于:https://www.cnblogs.com/je-ge/p/6254339.html

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

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

相关文章

错误:在keystone中无法找到默认角色user_Kubernetes RBAC角色权限控制

摘选:https://i4t.com/4448.html在Kubernetes中所有的API对象都保存在ETCD里&#xff0c;可是&#xff0c;对这些API对象的操作&#xff0c;却一定是通过访问kube-apiserver实现的。我们需要APIServer来帮助我们授权工作&#xff0c;而在Kubernetes项目中&#xff0c;负责完成授…

JAVAWEB项目如何实现验证码

验证码基础 一.什么是验证码及它的作用 &#xff1a;验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码、刷票、论坛灌水、有效防止某个黑客对某一个特定…

在线判题系统(oj)效果分析图_在线代码编写平台开发分享

计算机专业的大学生应该都了解acm比赛&#xff0c;这种通过使用oj(online judge)系统在线编程刷题&#xff0c;实时反馈学习排名的方式能很大程度激发学生的学习热情。oj学习排名界面oj个人学习记录界面只是oj平台一般都只适用后端语言&#xff0c;如java&#xff0c;c#, c,C&a…

BZOJ1298:[SCOI2009]骰子的学问

Description Input 第一行为两个整数n, m。第二行有n个整数&#xff0c;为a1&#xff0c;a2, …, an。 Output 包含n行&#xff0c;每行m个1~nm的正整数&#xff0c;各不相同&#xff0c;以空格分开。如果有多解&#xff0c;输出任意一组解&#xff1b;如果无解&#xff0c;输出…

mysql索引有字符集_07. 类型、字符集、引擎和索引

字符集是什么&#xff1f;为了更好的识别中文、日文、英文、希腊语。对于常用的符号进行了编码&#xff0c;这个编码就是字符集。字符集确定了文字的存储方式。字符集相当于是计算机中人类的语言。举个例子&#xff1a;我说的是英文&#xff0c;所以我存储的时候要用英文文字来…

new float查询长度 c++_C/C++经典面试题

面试题 1&#xff1a;变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义&#xff0c;不分配地址的称为声明。一个变量可以在多个地方声明&#xff0c; 但是只在一个地方定义。加入 extern 修饰的是变量的声明&#xff0c;说明此变量将在文件以外或在文件后面部分…

java8--IO(java疯狂讲义3复习笔记)

产生文件 File file new File("abc.txt");if(!file.exists()){System.out.println(file.exists());file.createNewFile();}System.out.println(file.getAbsolutePath()); 关于临时文件 1).放在指定目录,此时已项目为默认目录 File file File.createTempFile("…

python网络平台_python学习(九) 网络编程学习--简易网站服务器

python 网络编程和其他语言都是一样的&#xff0c;服务器这块步骤为&#xff1a;1. 创建套接字2. 绑定地址3. 监听该描述符的所有请求4. 有新的请求到了调用accept处理请求Python Web服务器网关接口(Python Web Server Gateway Interface&#xff0c;简称“WSGI”)&#xff0c;…

rabbit和mysql事务_分布式事务原理及SpringBoot整合RabbitMQ实现可靠事件,TCC事务模型及接口幂等性...

分布式事务我们知道在单数据库系统中&#xff0c;实现数据的一致性&#xff0c;通过数据库的事务来处理比较简单。在微服务或分布式系统中&#xff0c;各个独立的服务都会有自己的数据库&#xff0c;而不是在同一个数据库中&#xff0c;所以当一组事务(如商品交易中&#xff0c…

python pandas 数据库_Python中pandas函数操作数据库

一&#xff1a;创建链接数据库引擎Pythonfrom sqlalchemy import create_engineengine create_engine(postgresql://user58.251.157.179:port/database,echo True)echo True &#xff0c;会显示在加载数据库所执行的SQL语句。12345fromsqlalchemyimportcreate_engineenginecr…

mysql引擎模式_mysql引擎,完整的见表语句,数据库模式, 常用数据类型,约束条件...

引擎show engines : 查看引擎innodb(默认引擎)&#xff1a;支持事务&#xff0c;行级锁&#xff0c;外键myisam:查询效率由于innodb,不需要支持事务&#xff0c;行级锁&#xff0c;外键&#xff0c;可以选用myisam来优化数据库mysql> create table t1(id int)engineinnodb;m…

testng连接MySQL_Selenium+TestNG实战-8-连接数据库方法去验证文章是否发布

原标题&#xff1a;SeleniumTestNG实战-8-连接数据库方法去验证文章是否发布记得之前群里&#xff0c;有人说举例一下连接数据库在Selenium自动化测试中的应用。本篇刚好来举例一个&#xff0c;前面我们都是通过发布后文章的详情页的标题来判断文章是否已经发布成功&#xff0c…

武汉mysql ocp考点_MySQL OCP考试复习系列–开篇:了解MySQL考试

MySQL OCP考试复习系列–开篇&#xff1a;了解MySQL考试嗯&#xff0c;那个决定去考MySQL OCP了&#xff0c;事实上最近工作一直围绕着DB2&#xff0c;MySQL要去考的话需要好好的复习的啊。150分钟&#xff0c;100道多选&#xff0c;答对60道题可以通过&#xff0c;费用1077。L…

java文件服务器_JavaWeb项目架构之NFS文件服务器

NFS简介NFS(Network File System)即网络文件系统。主要功能&#xff1a;通过网络(局域网)让不同的主机系统之间可以共享文件或目录。主要用途&#xff1a;NFS网络文件系统一般被用来存储共享视频&#xff0c;图片&#xff0c;附件等静态资源文件。NFS存储服务无NFS文件共享存储…

table 样式详解

1.table 中css样式控制border 只能控制外边框&#xff0c;内边框需要写<table border"1"> 2.table 会自动撑大&#xff0c;即使td 设置了 width和height这与div 是不同的 3.只有一个table的时候 &#xff0c;高度自适应全屏 <style type"text/css"…

spring整合

spring整合hibernate&#xff0c;整合什么&#xff1f; 1. Spring 整合 Hibernate 整合什么 ?1). 有 IOC 容器来管理 Hibernate 的 SessionFactory 2). 让 Hibernate 使用上 Spring 的声明式事务2. 整合步骤:1). 加入 hibernate ①. jar 包 ②. 添加 hibernate 的配置文件: hi…

看看大货车到底有多少盲区,肯定用得到!救命的!

上路的司机都知道&#xff0c;一旦看到大货车就要离它远远的&#xff0c;因为大货车的盲区大。可是又有多少轿车司机懂得盲区在哪里呢?不仅是轿车司机&#xff0c;许多行人和非机动车辆对于大货车的盲区也是一知半解&#xff0c;常常有人因此丧命。 行人篇 先给大家看一张最直…

msgpack java lua_使用lua-cmsgpack序列化和反序列化lua对象

原文在简书首发&#xff1a;http://www.jianshu.com/p/badf412db4e7lua-cmsgpack是一个开源的MessagePack实现方式、纯C的库&#xff0c;没有任何其它依赖&#xff0c;编译后可以直接被lua调用&#xff0c;目前主要支持Lua5.1/5.2/5.3 版本。1、什么是MessagePack&#xff1f;-…

全国250米DEM数据

全国250米DEM数据 DEM是数字高程模型的英文简称(Digital Elevation Model)&#xff0c;是研究分析地形、流域、地物识别的重要原始资料。由于DEM 数据能够反映一定分辨率的局部地形特征&#xff0c;因此通过DEM 可提取大量的地表形态信息&#xff0c;可用于绘制等高线、坡度图、…

redis集群连接 java_Redis分布式集群和直连的Java客户端调用方式详解

jedis是一个著名的key-value存储系统&#xff0c;而作为其官方推荐的java版客户端jedis也非常强大和稳定&#xff0c;支持事务、管道及有jedis自身实现的分布式。在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比&#xff1a;一、普通同步方式最简单和基础…