Hibernate一对多双向关联(Annotation配置)



Hibernate一对多双向关联(Annotation配置)

   

Hibernate一对多双向关联(Annotation配置)

package edu.xaut.hibernate;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = “t_group”)
public class Group {
    private int id;
    private String name;
    private Set<User> users = new HashSet<User>();

    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(length = 20)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @OneToMany(mappedBy=”group”)   
    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }
}

package edu.xaut.hibernate;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = “t_user”)
public class User {
    private int id;
    private String name;
    private String title;
    private Group group;


    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(length = 20)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(length = 10)
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @ManyToOne   
    @JoinColumn(name = “groupId”)
    public Group getGroup() {
        return group;
    }

    public void setGroup(Group group) {
        this.group = group;
    }
}

生成的SQL语句如下:
create table t_group (
        id integer not null auto_increment,
        name varchar(20),
        primary key (id)
    )

    create table t_user (
        id integer not null auto_increment,
        name varchar(20),
        title varchar(10),
        groupId integer,
        primary key (id)
    )

    alter table t_user
        add index FKCB63CCB6D883DE2F (groupId),
        add constraint FKCB63CCB6D883DE2F
        foreign key (groupId)
        references t_group (id)