概念说明
一个用户可以有多个手机,一个手机只能被一个用户使用。这个就是多对一的关系,或者称之为一对多。用户是一,手机是多。外键设置在多这一方(如果不懂,可以百度一下)。具体设置的表如下:
EMPLOYEE (table)
EMP_ID |
FIRSTNAME |
LASTNAME |
SALARY |
MANAGER_ID |
1 |
Bob |
Way |
50000 |
2 |
2 |
Sarah |
Smith |
75000 |
null |
PHONE (table)
ID |
TYPE |
AREA_CODE |
P_NUMBER |
OWNER_ID |
1 |
home |
613 |
792-0000 |
1 |
2 |
work |
613 |
896-1234 |
1 |
3 |
work |
416 |
123-4444 |
2 |
一定要设置ManyToOne,如果需要可以设置OneToMany。
ManyToOne设置
设置ManyToOne的具体方法如下:
@Entity
public class Phone {
@Id
private long id;
...
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="OWNER_ID")
private Employee owner;
...
}
具体说明:
fetch=FetchType.LAZY的意思是select的时候懒加载,当加载phone这个对象的时候,会加载他的属性,如id,firstname,lastname,但是不会去加载owner的属性。如果不设置fetch=FetchType.LAZY,则默认是eager,不仅会加载id,firstname,lastname等属性,而且会加载owner里面的属性。
JoinColumn指的是Phone(多)表对应Employee(一)表关联字段的名称。
OneToMany设置
设置OneToMany的具体方法如下:
@Entity
public class Employee {
@Id
@Column(name="EMP_ID")
private long id;
...
@OneToMany(mappedBy="owner")
private List phones;
...
}
具体说明:
mappedBy="owner" 指的是在Phone这个实体类里面对应的Employee用的是哪个属性。OneToMany必须写mappedBy,不然会多生成一张没用的中间表,因为如果没写mappedBy,JPA不知道具体怎样做关联。
本文参考:https://en.wikibooks.org/wiki/Java_Persistence/OneToMany
http://stackoverflow.com/questions/11938253/jpa-joincolumn-vs-mappedby
欢迎关注橙子博客微信公众号:chengziboke888
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: ChatGPT Plugin开发setup – Java(Spring Boot) Python(fastapi)
记录一下快速模板,整体很简单,如果不接auth,只需要以下: 提供一个/.well-known/ai-plugin.json接口,返回openAI所需要的格式 提供openAPI规范的文档 CORS设置 其他的和普通的web开发类似. 本地开发就直接使用loc…