【发布时间】:2021-04-04 20:41:36
【问题描述】:
如何在hibernate中为下表实现一对一的双向关系:
create table persons(
person_id varchar(20) not null,
first_name varchar(20) not null,
last_name varchar(20) not null,
primary key client_fk (person_id)
);
create table roles(
person_id varchar(20) not null,
role_name varchar(20) not null,
role_description varchar(20) not null,
constraint role_person foreign key role_fk (person_id) references person(person_id)
);
我想在 PersonEntity 和 RoleEntity 之间建立关系。
我尝试了许多不同的设置,但都没有成功,例如:
@Entity(name = "persons")
@Table(name = "persons")
public class PersonEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "person_id")
int personId;
@Column(name = "first_name")
String firstName;
@Column(name = "last_name")
String lastName;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "person_id")
private RoleEntity role;
@Entity(name = "roles")
@Table(name = "roles")
public class RoleEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "person_id")
int personId;
@OneToOne
@JoinColumn(name = "person_id")
private PersonEntity person;
@Column(name = "role_name")
String roleName;
我的目标是创建两个 CrudRepositores(RolesRepository 和 PersonsRepository),以便检索所有分配了角色的人和所有分配了角色的人人。
如何实现?
【问题讨论】:
标签: java hibernate foreign-keys one-to-one