Одна Entity и Две @OneToOne анотации

108
24 апреля 2021, 02:10

В таблице Location содержится информация которая должна выбираться согласно связи characters.origin_id reference to location.id и characters.location_id reference to location.id. Два поля сущности ссылаются на на поле id другой сущности в зависимости от значения записанного в location_id и origin_id. но проблема в том что работает только location_id связь. Не пойму почему. Что-то я упустил....

например

characters -> id=1, name="Jim", origin_id=5, location_id=56
location -> id=5, name="Kyiv"
            id=56, name="London"

При выборке данных я получаю

Location origin.name = "London" и Location location.name = "London"

@Entity
@Table(name = "characters")
public class Character implements Serializable {
    @Id
    private Long id;
    @Column
    private String name;
    @Column
    private Long origin_id;
    @Column
    private Long location_id;
    @OneToOne(fetch = FetchType.LAZY)
    @Fetch(FetchMode.JOIN)
    @JoinColumn(name = "origin_id", insertable = false, updatable = false )
    private Location origin;
    @OneToOne(fetch = FetchType.LAZY)
    @Fetch(FetchMode.JOIN)
    @JoinColumn(name = "location_id", insertable = false, updatable = false )
    private Location location;
}
Answer 1

"Один-к-одному" не подходит, так как одному Character соответствуют два Location-а.

@ManyToOne(fetch = FetchType.LAZY) // !!!
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "origin_id", insertable = false, updatable = false )
private Location origin;
@ManyToOne(fetch = FetchType.LAZY) // !!!
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "location_id", insertable = false, updatable = false )
private Location location;

Вы вот здесь ничего не забыли сделать? - Вынес JS код в отдельный файл. Тормозит

READ ALSO
Как докачать расширения в Android Studio?

Как докачать расширения в Android Studio?

При первом запуске Android Studio возникает окно, с помощью которого можно установить все необходимые расширения, но после создания первого проекта,...

94
Кластеризация в Mapbox с использованием SymbolManager

Кластеризация в Mapbox с использованием SymbolManager

Пытаюсь сделать кластеризацию в приложении с использованием библиотеки mapbox и их плагина аннотацийВ разрабатываемом приложении необходимо...

104
Метод JPArepository.save() кидает NullpointerException

Метод JPArepository.save() кидает NullpointerException

Пожалуйста помогите решить эту проблему, хотя бы в какую сторону копать решение

85
.sort() Не сортирует

.sort() Не сортирует

Размер ArrayList задаю через BufferedReader, вывожу сообщение о последнем элементе массива, далее сортируюsort()-ом

95