Как сделать one to one undirectional mapping hibernate

235
10 мая 2017, 07:15

Я имею следующую схему БД:

Как видно из картинки Card_balance ссылается на Cards. Мне нужно чтобы при переходе в ORM у сущности Cards было поле Card_balance, и была однонаправленная связь, при которой Cards ссылается на Card_balance. Я пытался сделать это следующим образом:

  @Entity
@Table(name = "CARDS")
public class Cards implements Serializable {
    @Id
    @Column(name = "CARD_ID")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CARDS_SEQ")
    @SequenceGenerator(name = "CARDS_SEQ", sequenceName = "CARDS_SEQ")
    private Long cardId;
    ...
    @OneToOne
    @JoinColumn(name="CARD_ID", nullable = false)
    private CardBalance cardBalance;

а в card_balance добавил поле cardId

 @Entity
@Table(name = "CARD_BALANCE")
public class CardBalance {
    @Id
    @Column(name = "BALANCE_ID")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CARD_BALANCE_SEQ")
    @SequenceGenerator(name = "CARD_BALANCE_SEQ", sequenceName = "CARD_BALANCE_SEQ")
    private Long balanceId;
    ...
    @Column(name="CARD_ID")
    private Long cardId;

Но данный способ не сработал, так как при извлечение из бд cards я получаю следующее:

Подскажите пожалуйста в чем я ошибаюсь.

Answer 1

Мне кажется, вы путаетесь в понятиях. На диаграмме между CAPTAIN.CARDS и CAPTAIN.CARD_BALANCE связь не один к одному, а один ко многим. Не ясно выходит маппинг в классе Cards, сначала вы определяете колонку CARD_ID с Id самой сущности, а ниже определяете еще одну колонку CARD_ID с ссылкой на CardBalance. Попробуйте, переименуйте вторую, например, в BALANCE_ID так:

@OneToOne
@JoinColumn(name="BALANCE_ID", nullable = false)
private CardBalance cardBalance;
READ ALSO
JNI - Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

JNI - Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

Пишу приложение на Java, использующее dll-библиотеку методов, реализованных на С++ (технология JNI)Оказалось, что для разной разрядности установленной...

268
Где писать проверку в паттерне PageObject?

Где писать проверку в паттерне PageObject?

Доброго времени сутокВопрос первый: Подскажите пожалуйста где правильно писать проверку на нахождение на нужной странице и нужно ли вообще...

163
Не работает removeView на android

Не работает removeView на android

При вызове removeViev() окно не закрывается на android 50 (возможно на других версиях тоже, не проверял)

303