Jpa - Два @OneToOne отношения с одним и тем же 'mappedBy'

1

У меня есть два java-classes/db-tables: 'message' и 'thirdparty'

@Entity
public class Message {
    @OneToOne(mappedBy = "message")
    private ThirdParty source = null;

    @OneToOne(mappedBy = "message")
    private ThirdParty target = null;

    ....
}

@Entity
public class ThirdParty {
    @OneToOne(targetEntity = Message.class)
    @JoinColumn(name = "Message", referencedColumnName = "mess_id", nullable = false)
    private Message message = null;

    @Column(name = "isSource", nullable = false)
    private Boolean isSource = null;
}

Сообщение имеет две ссылки на ThirdParty, которые могут отличаться от isSource (если они являются исходными или целевыми).

Это не может быть разрешено jpa, так как оно спроектировано/аннотировано. Но есть ли способ сделать это, добавив некоторую аннотацию или какой-то специальный sql-оператор?

  • 1
    Возможно ли для вас , чтобы представить его в качестве OneToMany отношения с ThirdParty на многих сторонах?
  • 2
    Проверьте stackoverflow.com/questions/21345203/… . Упоминается похожая проблема.
Показать ещё 1 комментарий
Теги:
jpa
annotations

1 ответ

0

Это концептуально неправильно. Ты не сможешь это сделать. Отображение OneToOne происходит, когда два объекта отображаются следующим образом:
Entity1: имеет первичный ключ (PK1) и другие вместе с внешним ключом (FK)
Entity2: имеет первичный ключ (PK2).
Теперь FK отображается на PK2 таким образом, что для каждого вхождения PK должно быть одно и только одно совпадение FK.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню