hibernate(七)组件映射与多对一映射

时间:2023-03-08 20:19:11

一、组件映射

用注解配置组件映射:

Husband为我们映射的类,wife是这个类的一部分(属性不能与husband中属性重名,不要写Entity注解,不要有主键)

Husband类:(在getWife()方法上添加注解@Embedded)

package cn.orlion.hibernate.model;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; @Entity
public class Husband { private int id; private String name; private Wife wife; @Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
@Embedded
public Wife getWife() {
return wife;
} public void setWife(Wife wife) {
this.wife = wife;
}
}

wife类:

package cn.orlion.hibernate.model;

public class Wife {

    private String wifename;

    public String getWifename() {
return wifename;
} public void setWifename(String wifename) {
this.wifename = wifename;
} }

建表语句:

create table Husband (
id integer not null auto_increment,
name varchar(255),
wifename varchar(255),
primary key (id)
)

二、多对一映射

1、多对一单向映射

注解方式配置:(一个组有多个用户,每个用户对应一个组,user是多的一方,group是一)

Group类:

package cn.orlion.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/*
* 一个组有多个用户,每个用户对应一个组,user是多的一方,group是一
*/
@Entity
@Table(name="t_group")
public class Group { private int id; private String name;
@Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

User类:

package cn.orlion.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Entity
@Table(name="t_user")
public class User { private int id; private String name; private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
@ManyToOne
public Group getGroup() {
return group;
} public void setGroup(Group group) {
this.group = group;
}
}

hibernate生成的sql:

create table t_group (
id integer not null auto_increment,
name varchar(255),
primary key (id)
) create table t_user (
id integer not null auto_increment,
name varchar(255),
group_id integer,
primary key (id)
) alter table t_user
add constraint FK_e5f24mh6aryt9hsy99oydps6g
foreign key (group_id)
references t_group (id)