假设应用场景如下:Node与Ipqam是一对多的关系,其中,Node类对应node表如下:
CREATE TABLE `node` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
Ipqam类对应ipqam表如下:
CREATE TABLE `t_rm_ipqam` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`node_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_reference_50` (`node_id`),
CONSTRAINT `fk_reference_50` FOREIGN KEY (`node_id`) REFERENCES `node` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
两个类分别如下:
public class Node {
private List
@OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY, mappedBy = “node”)
public List
return ipqamList;
}
public void setIpqamList(List
this.ipqamList = ipqamList;
}
}
说明
1、该类经过简化,没有全部列出代码,在此我们只关注OneToMany注解及其属性设置。
2、@OneToMany
@OneToMany指明 Node 与 Ipqam 之间的关联关系为一对多关系。
3、mappedBy=”node”
mappedBy定义类之间的双向关系。如果类之间是单向关系,不需要提供定义,如果类和类之间形成双向关系,我们就需要使用这个属性进行定义,
其他属性说明参加上篇文章:如何使用JPA注解标注一对一的关系
public class Ipqam {
private Node node;//所属节点
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = “node_id”)
public Node getNode() {
return this.node;
}
public void setNode(Node node) {
this.node = node;
}
}
说明
@ManyToOne指明 Ipqam 和 Node 之间为多对一关系,多个 Ipqam 实例关联的都是同一个 Node 对象。
其中的属性和@OneToMany基本一样,但@ManyToOne注释的fetch属性默认值是FetchType.EAGER。
Sorry, the comment form is closed at this time.
No comments yet.