使用Hibernate注解:
有两个表UserInfo和Department,在UserInfo中一个departmentId的字段作为外键,引用的是Department的主键,然后在UserInfo类中,需要有一个Department的对象保存用户部门的信息:
UserInfo类:
@Entity
public class UserInfo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer userId;
private Integer roleId;
private String username;
private String password;
private Integer sex;
private Integer age;
private Integer departmentId;
private Integer positionId;
private String introduction;
private String interests;
private String phone;
private String mobilephone;
private String email;
private String address;
@OneToOne
@JoinColumn(name="departmentId", insertable = false, updatable = false)
private Department department;
}
Department类:
@Entity
public class Department implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer departmentId;
private String departmentName;
private String duty;
private String phone;
}
@OneToOne:定义对另一个带有一对一多样性的实体的单值关联。一般不必显示指定的目标实体,因为通常可以根据引用的对象类型判断出来。
-- cascade():串联到关联目标的操作。默认不串联
-- fetch():关联应该延迟加载还是立即获取
-- mappedBy():拥有关系字段。此元素仅在关联的反向端(非拥有端)指定
-- optional():关联是否是可选的。如果设置为 false,则必须总是存在非 null 关系。
-- targetEntiry():作为关联目标的实体类
JoinColumn:此类用于指定连接到实体关联的映射列。
-- insertable():持久性提供者生成的 SQL INSERT 语句中是否包含该列。
-- name():外键列的名称。它所在的表取决于上下文。如果连接针对 OneToOne 或 Many- ToOne 映射,则外键列位于源实体的表格中。如果连接针对 ManyToMany,则外键位于连接表格中。
-- nullable():外键列是否可为 null。
-- referencedColumnName():此外键列引用的列的名称。
-- table():包含该列的表格的名称。
-- unique():属性是否为唯一键。
-- updatable():持久性提供者生成的 SQL UPDATE 语句中是否包含该列。