hibernate关联映射(注解) —— 多对一关联关系(@ManyToOne)

hibernate基于注解的多对一关联使用@ManyToOne注解。
注意:需要引入的为: javax.persistence.ManyToOne

//多对一关联映射
@ManyToOne(fetch = FetchType.EAGER) // 设置及时加载
@Cascade(CascadeType.SAVE_UPDATE) // 设置级联操作
@JoinColumn(name = "外键名") // 设置外键名

假设有两个类:User(用户)与Group(组),多个用户属于一个组。

首先,对于hibernate配置文件 hibernate.cfg.xml 要做如下改动:

<!-- xml配置 -->
<mapping resource="demo/entity/User.hbm.xml"/>
<mapping resource="demo/entity/Group.hbm.xml"/>

修改为:

<!-- 注解配置 -->
<mapping class="demo.entity.User" />
<mapping class="demo.entity.Group" />

User 类如下

package demo.entity;

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

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity // 设置为Entity实体 
@Table(name = "user") // 设置数据库表名,
public class User {
    private int userId;
    private String username;
    private Group group;

    @Id // 设置为主键
    // 主键自增IDENTITY,配置文件中数据库方言改为
    // org.hibernate.dialect.MySQL5InnoDBDialect
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "userId", nullable = false) //主键名称
    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    @Basic // 普通键
    @Column(name = "username", nullable = false)
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    //多对一关联映射
    @ManyToOne(fetch = FetchType.EAGER) // 设置及时加载
    @Cascade(CascadeType.SAVE_UPDATE) // 设置级联操作
    @JoinColumn(name = "groupId") // 设置外键名
    public Group getGroup() {
        return group;
    }

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

Group类如下:

package demo.entity;

import javax.persistence.Basic;
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 = "u_group")
public class Group {
    private int groupId;
    private String groupName;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "groupId", nullable = false)
    public int getGroupId() {
        return groupId;
    }
    public void setGroupId(int groupId) {
        this.groupId = groupId;
    }

    @Basic
    @Column(name = "groupName", nullable = false)
    public String getGroupName() {
        return groupName;
    }
    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

}

hibernate自动建表操作结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_35224639/article/details/80608002