此处 主要实现 单向的多对一的关联映射
以Type 与Blog 为例 Blog 与 Type 是多对一的关系
1.Type实体
@Entity
@Table(name="type", schema="test")
public class Type implements Serializable{
private static final long serialVersionUID = -9001497618120757841L;
private int id;
private String name;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2 . Blog实体
/**
* 多对一 一个type下有许多blog
* */
@Entity
@Table(name="blog")
public class Blog implements Serializable{
private static final long serialVersionUID = 3230972313596285709L;
private int id;
private String name;
private Type type;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* 映射多对一 @ManyToOne 的用法与OneToOne 类似 可参考
* */
@ManyToOne(targetEntity=Type.class)
@JoinColumn(name="type_id")
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
}
测试后 表结构如下:
CREATE TABLE `type` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
CREATE TABLE `blog` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
`type_id` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK2E2FA282352D6A` (`type_id`),
CONSTRAINT `FK2E2FA282352D6A` FOREIGN KEY (`type_id`) REFERENCES `type` (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8