博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate单向关联N-N
阅读量:2492 次
发布时间:2019-05-11

本文共 2751 字,大约阅读时间需要 9 分钟。

单向N-N关联必须使用连接表。

Company实体:

package com.ydoing.hibernate5;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.Table;@Entity@Table(name = "company_inf")public class Company {
@Id @Column(name = "company_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @ManyToMany(targetEntity = Product.class, cascade = CascadeType.ALL) @JoinTable(name = "company_product", joinColumns = @JoinColumn(name = "company_id", referencedColumnName = "company_id"), inverseJoinColumns = @JoinColumn(name = "product_id", referencedColumnName = "product_id")) private Set
products = new HashSet<>(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set
getProducts() { return products; } public void setProducts(Set
products) { this.products = products; }}

Product实体:

package com.ydoing.hibernate5;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "product_inf")public class Product {
@Id @Column(name = "product_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}

Console输出:

Hibernate:     insert     into        company_inf        (name)     values        (?)Hibernate:     select        last_insert_id()Hibernate:     insert     into        product_inf        (name)     values        (?)Hibernate:     select        last_insert_id()Hibernate:     insert     into        product_inf        (name)     values        (?)Hibernate:     select        last_insert_id()Hibernate:     insert     into        company_product        (company_id, product_id)     values        (?, ?)Hibernate:     insert     into        company_product        (company_id, product_id)     values        (?, ?)

从输出不难看出,Hibernate创建了连接表company_product。

数据库表:

这里写图片描述
这里写图片描述
这里写图片描述

你可能感兴趣的文章
Android 虚拟机简单介绍——ART、Dalvik、启动流程分析
查看>>
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day06
查看>>
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
股票网格交易策略
查看>>