hibernate中的一对一Map单向mysql db?

iezvtpos  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(295)

我刚接触hibernate和mysql,我有两个类似于offer\u table和offer\u likes\u dislikes的表
提供表列

OFR_ID(PK)
OFR_MSG

提供“喜欢”或“不喜欢”列

OFFER_LIKES_DISLIKES_ID
OFR_ID(FK)
LIKE
DISLIKE

我想Mapoffer\u表和offer\u likes\u dislikes,通过offer\u表访问offer\u likes\u dislikes数据。我使用一对一Map,但它不工作。
hibernate注解Mapjava类
报价.等级

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

@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表中,r\u id是唯一的。我习惯了一对一。但我没有得到像这样的数据。哪一个是获取数据的最佳方法。帮我解决这个问题。

9rbhqvlz

9rbhqvlz1#

有很多问题:
您正在创建与dao的关联,而不是创建与实体的关联
您将要约的id存储在likedislike实体中,而不是存储与要约实体的关联
你是说有一个名为 OFR_ID 并引用offer表中类似的实体。
您不尊重java命名约定
在同一个字段上设置了两个onetoone注解
Map应为:
报价:

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

相关文件

相关问题