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自动建表操作结果: