为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2021-10-13 16:32:26
我是 Hibernate 和 MySQL 的新手,我有两个表,如OFFER_TABLE和OFFER_LIKES_DISLIKESOFFER_TABLE 列OFR_ID(PK)OFR_MSGOFFER_LIKES_DISLIKES 列OFFER_LIKES_DISLIKES_IDOFR_ID(FK)LIKEDISLIKE我想映射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 的数据。哪一种是获取该数据的最佳方式。帮我解决这个问题。
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

有很多问题:

  1. 您正在创建与 DAO 的关联,而不是创建与实体的关联

  2. 您将商品的 ID 存储在 LikeDislike 实体中,而不是存储与商品实体的关联

  3. 您是说在 OFFER 表中有一个名为OFR_ID并引用 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;


查看完整回答
反对 回复 2021-10-13
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信