作者:ssslinppp
1. 摘要
主要讲解N-1关系表的设计,N:从表,1:主表;
从表(N)中使用外键关联到主表(1),单向的;
场景:
许多人(N)可以住在同一个地方(1),知道人就可以知道这个人的地址;
反过来,知道地址,不能知道该地址住的人。
2. 数据表设计
地址表:
Person表:
e
3. 实体类-注解方式
Address.java
Person.java
- @JoinColumn :用于定义外键,数据库层面的,name值是数据表中的字段值;
- @ManyToOne :java类层面的;
- @Cascade : 设置级联,系统先自动级联插入主表记录,再插入从表记录==>因为在插入从表(N)记录时,指定的外键不能为null,所以在插入从表记录之前,需要有对应的主表(1)记录存在,若不存在对应的主表记录,则会报错。这里设置@Cascade ,可以保证在主表记录还没有插入而是先插入了从表记录时,Hibernate会自动先将主表记录保存,然后再保存从表记录。这就是级联的意思。
4. 测试
执行后的结果: