Database Spring/Hibernate与额外列的一对一关系
在Spring/Hibernate中是否可以使用额外的列建立一对一的关系?如果是,我们怎么办?我想我必须使用联接表将两个实体链接在一起,然后在此联接表中添加一个额外的列,但我不知道如何进行 下面是一个代码示例,它对员工和工作站之间的关系进行了建模,它使用了Database Spring/Hibernate与额外列的一对一关系,database,spring,hibernate,one-to-one,Database,Spring,Hibernate,One To One,在Spring/Hibernate中是否可以使用额外的列建立一对一的关系?如果是,我们怎么办?我想我必须使用联接表将两个实体链接在一起,然后在此联接表中添加一个额外的列,但我不知道如何进行 下面是一个代码示例,它对员工和工作站之间的关系进行了建模,它使用了@JoinTable,以便将关系保存在专用的联接表中。我想在此关系中添加一个额外的信息,例如,员工上次使用给定的工作站时,我将如何做到这一点 员工实体: @Entity @Table(name = "employee") public clas
@JoinTable
,以便将关系保存在专用的联接表中。我想在此关系中添加一个额外的信息,例如,员工上次使用给定的工作站时,我将如何做到这一点
员工实体:
@Entity
@Table(name = "employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
//...
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "emp_workstation",
joinColumns = { @JoinColumn(name = "employee_id", referencedColumnName = "id") },
inverseJoinColumns = { @JoinColumn(name = "workstation_id", referencedColumnName = "id") })
private WorkStation workStation;
//... getters and setters
}
工作站实体:
@Entity
@Table(name = "workstation")
public class WorkStation {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
//...
@OneToOne(mappedBy = "workStation")
private Employee employee;
//... getters and setters
}
首先,我建议您改变员工和工作站之间的关系,创建一个@ManyToOne 一对一关系将一个表中的一条记录与另一个表中的一条记录关联起来 多对一关系将一个表中的多条记录与另一个表中的一条记录关联起来 然后,在以下情况下使用@ManyToOne:
- 数据库中有许多工作站,用户可以访问 只有一个工作站李>
- 员工可以使用不同的工作站(或同一工作站),但一次只能使用一个
然后,如果您存储“员工上次使用给定工作站的时间”,这意味着您在“工作站”表中可能有一条以上的给定员工记录。首先,我建议您更改员工和工作站之间的关系,以创建@ManyToOne 一对一关系将一个表中的一条记录与另一个表中的一条记录关联起来 多对一关系将一个表中的多条记录与另一个表中的一条记录关联起来 然后,在以下情况下使用@ManyToOne:
- 数据库中有许多工作站,用户可以访问 只有一个工作站李>
- 员工可以使用不同的工作站(或同一工作站),但一次只能使用一个
然后,如果您存储“员工上次使用给定工作站的时间”,这意味着您在“工作站”表中可能有一条以上的给定员工记录。Thanx为您的答案Thanx为您的答案
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(
name = "workstation_id",
foreignKey = @ForeignKey(name = "fk_workstation_id")
)
private WorkStation workStation;