Hibernate单向与MySQL DB中的一对一映射?

我是 Hibernate 和 MySQL 的新手,我有两个表,如OFFER_TABLE和OFFER_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数据。我正在使用一对一映射,但它不起作用。


Hibernate注解映射Java类


优惠.class


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

喜欢不喜欢.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 是唯一的。我使用一对一。但是我没有得到 LikeDislike 的数据。哪一种是获取该数据的最佳方式。帮我解决这个问题。


智慧大石
浏览 122回答 1
1回答

鸿蒙传说

有很多问题:您正在创建与 DAO 的关联,而不是创建与实体的关联您将商品的 ID 存储在 LikeDislike 实体中,而不是存储与商品实体的关联您是说在 OFFER 表中有一个名为OFR_ID并引用 LikeDislike 实体的连接列。你不尊重 Java 命名约定您正在同一字段上设置两个 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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java