1. AccessType.FIELD AccessType.PROPERTY
FIELD 和PROPERTY的区别实际上不是JPA特有的,像很多编程语言,例如C#或者js都有。FIELD就是java中的域,是一个实际存在的字段。但是属性可能是对特定的域进行计算之后的存取器。firstName和lastName是field,fullName是property,但是只有属性获取器。
@Getter@Setter
class Person{
private String firstName;
private String lastName;
public String getFullName(){
return firstName+" "+lastName;
}
}
2.
-------------------------------------------
|employee |department |
|id |id |
|depId (fk) | |
-------------------------------------------
@Entity@Table(name="employee")
class Employee{
@Id private long id;
@ManyToOne
@JoinColumn(name="depId") //default is department_id
private Department department;
}
@Entity@Table(name="department")
class Department{
@Id private long id;
@OneToMany(mappedBy="department")
private Set<Employee> employees;
}
拥有字段的一方成为所有方或者主控方,另一方成为被空方。所有方可以使用@JoinColumn,指定的名字为数据库表的字段名;被控方可以使用mappedBy,指定的名称为entity的字段名。