Отображение один в один в Hibernate Однонаправленный с БД MySQL? - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в 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_LIKES_DISLIKES через OFFER_TABLE.Я использую сопоставление один к одному, но оно не работает.

Отображение аннотаций в спящем режиме Java Class

Offers.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;

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 является УНИКАЛЬНОЙ.Использую Один к одному.Но я не получил данные LikeDislike.Какой из них лучший способ взять эти данные.Помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 27 сентября 2018

Существует много проблем:

  1. Вы создаете связь с DAO вместо того, чтобы создавать связь с сущностью
  2. Вы сохраняете идентификатор предложения всущность LikeDislike вместо сохранения связи с сущностью Offer
  3. Вы говорите, что существует столбец соединения с именем OFR_ID и ссылаетесь на сущность LikeDislike в таблице OFFER .
  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;

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;

Соответствующая документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...