[英]Jpa @OnetoOne relationship
這是我的實體類作者
@Entity
@Column(name = "ID")
private Long id;
@Column(name = "LAST1")
private String last;
@Column(name="FIRST1")
private String first;
@Lob
@Column(name = "BIO")
private String bio;
@OneToOne
private AuthorDetail authorId;
getter和setter和零參數構造函數
這是我的另一個實體AuthorDetail,這里我已使用@OneToOne映射(可選= false,mappedBy =“ authorDetail”)
@Column(name = "ID")
private Long id;
@Column(name = "ADDRESS1")
private String address1;
@Column(name="ADDRESS2")
private String address2;
@Column(name = "CITY")
private String city;
@Column(name = "STATE1")
private String state;
@Column(name = "ZIP")
private String zip;
@Column(name = "START_DATE")
@Temporal(TemporalType.DATE)
private Date startDate;
@Lob
@Column(name = "NOTES")
private String notes;
@OneToOne(optional = false,mappedBy = "authorDetail")
private Author authorId;
吸氣和二傳手這是我的主要課程
`EntityTransaction entr=em.getTransaction();
entr.begin();
Author author=new Author();
author.setFirst("MD");
author.setLast("RAHMATH");
author.setBio("A Software Developer");
Set detailSet=new HashSet<AuthorDetail>();
AuthorDetail detail=new AuthorDetail();
detail.setAddress1("Address1");
detail.setAddress2("Address2");
detail.setCity("NoMansLand");
detail.setState("ZZ");
detail.setZip("12345");
detail.setNotes("This is test detail");
detailSet.add(detail);
em.persist(author);
entr.commit();`
如果嘗試運行該程序,我將獲得例外
如果需要單向關系,則無需在兩個類中都編寫@OneToOne。 從給定的代碼段中,您似乎想要作者詳細信息和作者之間的雙向關系。
為了讓另一端了解該關系(雙向),需要將mapledBy屬性添加到@OneToOne批注中。 此屬性引用作為關系所有者的實體中的(Java)屬性。 您需要在AuthorDetail類中添加;
@OneToOne(optional = false,mappedBy = "authorId") private Author authorId;
在mappedBy屬性中,您需要引用實體而不是類名。
在您的Author
更改以下內容:
@OneToOne
private AuthorDetail authorId;
至:
@OneToOne
private AuthorDetail authorDetail;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.