我有一个人类,其基本字段(例如姓名,年龄等)...我想为每个人的汽车详细信息创建一个单独的表,

所以我以这种方式实现了@OneToOne关系:

@Entity
@Table(name = "PERSON")
public class person {

@OneToOne(mappedBy="person", cascade= CascadeType.ALL)
 private CarDetails carDetails ;

//more fields and getters and setters and of course @Id.....
}


和另一个实体:

@Entity
@Table(name="CAR_DETAILS")
public class CarDetails {

 @Id
 @Column(name= "READER_ID")
 @GeneratedValue(generator="gen")
 @GenericGenerator(name="gen", strategy="foreign", parameters=@Parameter(name="property", value="Person"))
 private long readerId;

 @OneToOne
 @PrimaryKeyJoinColumn
 private Person person;

//more fields and getters and setters
}


一切正常,但我不确定这是否是“ mappedBy”的正确用法。
我对此有所了解,我遇到了自己的实现方式,但也遇到了其他实现方式,因此我有些困惑。

有人可以详细说明这是否是“ mappedBy”的正确用法吗?

最佳答案

我建议您使用旧的时尚模式

@OneToOne(orphanRemoval = true, optional = true, cascade = {CascadeType.ALL}, mappedBy = "person")
@Getter
@Setter
private CarDetails carDetails;


@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "person_id")//You will need to create foreign key
@Getter
@Setter
private Person person;

关于java - 这是@OneToOne关系中“mappedBy”的正确用法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30956300/

10-11 10:29