簡體   English   中英

使用MySQL DB在Hibernate單向中進行一對一映射?

[英]One to One Mapping in Hibernate Unidirectional with MySQL DB?

是Hibernate和MySQL的新手,我有兩個表,例如OFFER_TABLEOFFER_LIKES_DISLIKES

OFFER_TABLE欄

OFR_ID(PK)
OFR_MSG

OFFER_LIKES_DISLIKES列

OFFER_LIKES_DISLIKES_ID
OFR_ID(FK)
LIKE
DISLIKE

我想映射OFFER_TABLE和OFFER_LIKES_DISLIKES,通過OFFER_TABLE訪問OFFER_LIKES_DISLIKES數據。 我正在使用一對一映射,但無法正常工作。

休眠注釋映射Java類

優惠等級

@Id
@GeneratedValue
@Column(name = "OFR_ID", length = 11, nullable = false)
private int offer_id;

@OneToOne
@JoinColumn(name="OFR_ID", unique = true)
@OneToOne(cascade = CascadeType.ALL)
private MessageLikeDislikesDAO likeDislikes;

LikeDislike.class

@GeneratedValue
@Column(name="LIKES_DISLIKES_ID", length = 11, nullable = false)
private int likes_dislikes_id;

@Expose
@Column(name="OFR_ID", length = 11, nullable = false)
private int offer_id;

當我獲得要約數據時,想要與之關聯的喜歡和不喜歡的數據。 在LikeDislike表中,OFR_ID是UNIQUE。 被一對一使用。 但是我沒有得到LikeDislike的數據。 哪一種是獲取該數據的最佳方法。 幫我解決這個問題。

有很多問題:

  1. 您正在與DAO創建關聯,而不是與實體創建關聯
  2. 您將要約的ID存儲在LikeDislike實體中,而不是存儲與要約實體的關聯
  3. 您是說有一個名為OFR_ID的連接列,並引用了OFFER表中的LikeDislike實體。
  4. 您不尊重Java命名約定
  5. 您要在同一字段上設置兩個OneToOne批注

映射應為:

提供:

@Id
@GeneratedValue
@Column(name = "OFR_ID", length = 11, nullable = false)
private Integer offerId;

@OneToOne(mappedBy = "offer", cascade = CascadeType.ALL)
private LikeDislike likeDislike;

喜歡不喜歡:

@GeneratedValue
@Column(name="LIKES_DISLIKES_ID", length = 11, nullable = false)
private Integer likeDislikeId;

@Expose
@OneToOne
@JoinColumn(name="OFR_ID", length = 11, nullable = false)
private Offer offer;

相關文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM