2015-06-20 443 views
1

我有它的基本領域,如姓名,年齡等個人類......我想爲每個人的車細節一個單獨的表,這是@OneToOne關係中「mappedBy」的正確用法嗎?

,所以我以這種方式實現的@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", [email protected](name="property", value="Person")) 
private long readerId; 

@OneToOne 
@PrimaryKeyJoinColumn 
private Person person; 

//more fields and getters and setters 
} 

一切工作正常,但我不知道這是「的mappedBy」的使用權。 我讀了一些它,我遇到了我的這種實現,但也有人,所以我有點困惑。

有人可以詳細說明這是否正確使用「mappedBy」?

+2

是的,它的罰款。 –

回答

0

,我建議你使用舊的時尚模式

@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; 
+0

通過「包裹」你的意思是人,對嗎?另外,你推薦這個而不是上面的原因是什麼? – Raz

+0

Ups,已更新 – paul