`

hibernate 一个类映射多个表

 
阅读更多

使用 @SecondaryTables 注解实现一个类映射多个表

比如现有三个实体: Name , Address & Student:

Name:

@Entity
@Table(name="name")
public class Name implements Serializable {

    @Id
    @Column(name="id")
    private int id;
    @Column(name="name")
    private String name;

    public Name(){}

    public Name(int id,String name){
        this.id=id;
        this.name=name;
    }
        //getters and setters
}

 Address:

@Entity
@Table(name="address")
public class Address implements Serializable {

    @Id
    @Column(name="id")
    private int id;
    @Column(name="address")
    private String address;

    public Address(){}

    public Address(int id, String address) {
        super();
        this.id = id;
        this.address = address;
    }
        //getters and setters
}

 Student:

@Entity
@Table(name="student")
@SecondaryTables({
    @SecondaryTable(name="name", pkJoinColumns={
        @PrimaryKeyJoinColumn(name="id", referencedColumnName="student_id") }),
    @SecondaryTable(name="address", pkJoinColumns={
        @PrimaryKeyJoinColumn(name="id", referencedColumnName="student_id") })
})
public class Student implements Serializable {

    @Id
    @Column(name="student_id")
    private int studentId;

    @Column(table="name")
    private String name;

    @Column(table="address")
    private String address;

    public Student(){}

    public Student(int studentId){
        this.studentId=studentId;
    }
        //getters and setters
}

 

Test:

    Student s= new Student(1);
    session.save(s);

    Name n=new Name(s.getStudentId(),"Bilal Hasan");
    session.save(n);    

    Address address = new Address(s.getStudentId(), "India");
    session.save(address);

    Student ob = (Student)session.get(Student.class, s.getStudentId());

    System.out.println(ob.getStudentId());
    System.out.println(ob.getName());
    System.out.println(ob.getAddress());

 输出:

 

1

Bilal Hasan

India

shareimprove this answer

edited Mar 27 '14 at 13:13

answered Mar 27 '14 at 13:06

 

Rembo

2,29911230

分享到:
评论

相关推荐

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    hibernate 无主键表映射

    在Java的持久化框架Hibernate中,无主键表映射是一种特殊情况,主要处理...所提供的资源包括一个简单的Demo,可以实际运行并理解无主键表映射的实现过程,以及相应的SQL语句和博客文档,这些都是深入学习和实践的关键。

    hibernate 映射关系学习入门 多对多实体映射

    Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,从而实现了面向对象编程和关系数据库之间的桥梁。Hibernate提供了强大的查询语言HQL(Hibernate Query Language)以及 ...

    Hibernate一对多映射

    在这个场景中,一个实体(类)可以拥有多个其他实体实例,就像在数据库中一个表的一条记录可以关联到另一表的多条记录一样。我们来详细探讨一下Hibernate一对多映射的实现方法、配置以及应用场景。 **1. 实体类定义...

    hibernate(一对多,多对一映射)操作

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,使得在Java应用中操作数据库变得更加简单。本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    springmvc+hibernate多表映射

    Hibernate则是一个强大的ORM框架,它可以将Java对象与数据库中的记录进行映射,从而简化了数据库操作。在多表映射中,Hibernate允许我们定义实体类之间的关系,如一对一、一对多、多对一和多对多关系。 在“一对多...

    Hibernate初之单表映射学习例子

    3. **实体类设计**:讲解如何创建一个Java类作为数据库表的映射,包括使用`@Entity`注解标记实体类,`@Id`注解定义主键,以及其他字段的注解如`@Column`。 4. **XML映射文件**:解释Hibernate的Hibernate ...

    hibernate set 集合映射

    2. **元素类型**:集合中的每个元素都是一个实体对象,它们通常通过@ManyToOne或@OneToOne关联映射到单独的数据库表。 3. **关联映射**:集合映射通常涉及到两个实体之间的关联,如一对一(@OneToOne)、一对多(@...

    hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了

    1. **一对多关联**:例如,一个公司有多个员工,可以创建一个Company类(对应数据库表Company)和一个Employee类(对应Employee表)。Company类包含一个Employee列表,表示一个公司可以拥有多个员工。 2. **多对一...

    Hibernate高级映射实例

    单向多对多映射通常需要一个中间表来存储两个实体的关联关系。在Hibernate中,我们可以通过@ManyToMany和@JoinTable注解来定义这种关系,其中@JoinTable会定义中间表的信息。 在实际应用中,理解并熟练掌握这些映射...

    hibernate单向多对多映射(XML版)

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而提高开发效率。本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这...

    hibernate一对多映射

    在Java持久化框架Hibernate中,一对多映射(One-to-Many Mapping)是数据库关系模型中常见的关联类型,它表示一个实体(如一个用户)可以与多个其他实体(如订单)相关联。在这个实例中,我们将深入探讨如何在...

    Hibernate关联映射总结

    - **一对一唯一外键映射**:这种映射方式通过在一个表中添加一个外键来实现一对一的关系。通常情况下,外键字段可以包含NULL值,但在一对一映射中,我们会设置这个字段不可为空来确保关系的唯一性。例如,在`Person`...

    hibernate 多对一映射

    【hibernate 多对一映射】是关系数据库与对象模型之间的一种映射机制,是Hibernate框架中的一个重要概念。Hibernate作为一个优秀的Java持久化框架,它允许开发者将数据库操作转化为面向对象的操作,大大简化了数据库...

    hibernate学习入门一对多实体映射源码

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而简化了数据访问层的编程。在这个“hibernate学习入门之一对多实体映射源码”教程中,我们将...

    hibernate 多对多映射实例,学生 选课

    总的来说,这个“hibernate 多对多 映射实例,学生 选课”项目涵盖了Hibernate的多对多关系映射、数据库设计、对象模型构建、事务管理等多个方面,是一个很好的学习和实践Hibernate的实战案例。通过深入理解和实践这...

Global site tag (gtag.js) - Google Analytics