`
Ydoing
  • 浏览: 106014 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hibernate单向关联N-N

 
阅读更多

单向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<Product> 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<Product> getProducts() {
        return products;
    }
    public void setProducts(Set<Product> 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。

数据库表:
这里写图片描述
这里写图片描述
这里写图片描述

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Hibernate基于外键的一对多单向关联

    “Hibernate基于外键的一对多单向关联”这个标题指的是在Java持久化框架Hibernate中,如何通过外键实现一个实体类(如订单)与另一个实体类(如商品)之间的一对多关系,并且这种关联是单向的,即从订单端可以访问到...

    HIbernate关联关系总结

    本篇文章将详细讲解Hibernate的两种单向关联关系:单向1-N关联和单向N-1关联。 1. **单向1-N关联** 在这种关联关系中,一个实体(1端)可以与多个其他实体(N端)相关联。在Hibernate中,通常在1端的实体类中引入...

    hibernate 全面学习->hibernate 关联映射学习

    本文将深入探讨Hibernate的关联映射学习,包括一对多、多对一、一对一等多种关系映射的方式。 首先,我们来看一下“一对多”(One-to-Many)的映射关系。在Hibernate中,这种关系通常用在一个实体可以拥有多个子...

    hibernate多对多单向关联

    在本篇讨论中,我们将深入探讨Hibernate如何实现多对多单向关联。 一、多对多关联的配置 在Hibernate中,多对多关联通常通过`@ManyToMany`注解来定义。这个注解可以用在实体类的属性上,表示该属性与另一个实体类...

    23-Hibernate数据关联(11、M1、1N、MN)

    本教程将深入探讨Hibernate中的四种主要数据关联:一对一(11)、多对一(M1)、一对多(1N)和多对多(MN)的关系映射。 1. **一对一(11)关联**: 在现实世界中,有些实体间存在一对一的关系,例如一个人只有一...

    hibernateORM1-n映射

    8. **单向与双向映射**:一对多关系可以是单向的,即只有“1”端知道“N”端;也可以是双向的,双方都有对对方的引用。双向映射需要注意维护关系的同步,防止数据不一致。 在实践中,我们可以使用Hibernate的API来...

    hibernate03:多对一单向关联、多对一双向关联

    本文主要探讨的是Hibernate中的两种关联关系:多对一单向关联和多对一双向关联。通过理解这两种关联方式,我们可以更好地设计和实现复杂的数据库模型。 首先,我们来看**多对一单向关联**。这种关联意味着一个实体...

    Hibernate笔记

    单向N-N关联与1-N关联类似,但在控制端增加一个Set类型的属性,但没有`unique="true"`属性,因为多对多关系允许重复的关联。 【Hibernate批量处理】 批量处理能提高数据操作效率,减少数据库交互次数。在Hibernate...

    Hibernate一对多单向关联映射

    本篇文章将深入探讨Hibernate中一对多单向关联映射的概念、配置以及其实现方法。 一、概念理解 一对多关联意味着在数据库中,一个表(实体)的一条记录可以对应另一个表(实体)的多条记录。例如,一个学生可以有多...

    hibernate关联映射

    1. **单向N-1关联(无连接表)** 在这种关联中,一个Person对象拥有一个Address对象。在Person类中添加`private Address address`属性,并在`person.hbm.xml`中配置`&lt;many-to-one&gt;`元素,如`&lt;many-to-one name=...

    Hibernate性能调优

    关联通常包括以下几种类型:单向`one-to-many`关联、双向`one-to-many`关联、`many-to-one`关联以及`one-to-one`关联。 ##### 单向`one-to-many`关联 - **定义**:单向`one-to-many`关联是指一个实体可以拥有多个...

    Hibernate教程04_关系映射之一对一单向外键关联

    **标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...

    Hibernate中的关联映射

    单向关联映射指的是在一个方向上定义关联,而另一个方向不定义任何关联的情况。这通常适用于某些情况下一方对另一方有依赖,但另一方并不关心这种依赖的情况。 ###### 2.1.1 多对一 (N-1) - **基于FK**:在这种...

    Hibernate Annotation 基于外键的单向多对一关联

    在`Department`类中,由于是单向关联,所以不需要在`Department`上做任何特殊标注。外键`department_id`会在`Employee`表中生成,关联到`Department`的`id`。 `@ManyToOne`注解的参数解释: - `fetch`:默认是`...

    Hibernate一对一关联映射(注解)

    1. **外键约束**:在一对一关联中,通常由一方持有外键,可以是双向关联,也可以是单向关联。 2. **唯一性**:在数据库中,一对一关联的两个表的关联字段必须具有唯一性约束。 3. **性能考虑**:根据业务需求选择...

    Hibernate学习

    - **多对多关联映射单向数据存储**:演示如何保存多对多的关系。 - **多对多关联映射单向数据加载**:演示如何加载多对多的数据。 #### 多对多关联映射双向(many-to-many) 这部分内容可能涉及多对多关联映射的...

    Hibernate的N对N的关系映射

    ### Hibernate的N对N的关系映射详解 #### 一、概念理解 在关系型数据库设计中,实体之间的关联关系主要有三种类型:一对一(One-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)。而Hibernate作为一种...

    Hibernate入门到精通

    - 查询:HQL(Hibernate Query Language)是Hibernate的查询语言,可以避免N+1问题,通过一次性加载所有数据或使用`Criteria` API进行分页查询。 总的来说,Hibernate通过简化数据库操作,提高了开发效率。理解并...

    Hibernate 一对一连接表单向关联

    本知识点将深入讲解Hibernate中的一对一(OneToOne)连接,特别是单向关联的实现。 在数据库设计中,一对一关联是指两个实体之间存在唯一对应的关系,例如一个人可能只有一个身份证,或者一个账户只有一个用户信息...

Global site tag (gtag.js) - Google Analytics