powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: OneToOne
25 сообщений из 27, страница 1 из 2
Hibernate: OneToOne
    #39336236
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две сущность:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Entity_1 {
	@Id
	private Long id;

	@Column
	private Integer code;

	// ... остальные поля
}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Entity_2 {
	@Id
	private Long id;

	@Column
	private Integer code;

	// ... остальные поля
}

Сейчас они никак не связаны: ни в базе ни в коде. Между ними должна быть связь один-к-одному по полю code и объявить мне её нужно в Entity_1, потому что к Entity_2 нужен доступ только из Entity_1.

Пробовал сделать вот так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class Entity_1 {
	@Id
	private Long id;

	@Column
	private Integer code;

	@OneToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "CODE", referencedColumnName = "CODE")
	private Entity_2 entity_2;

	// ... остальные поля
}

Но это неправильно, потому что тогда колонка не определена.

Подскажите, пожалуйста, как сие реализовать?
Спасибо.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336270
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл сказать, что Entity_2 мне нужно выбирать только LEFT JOIN'ом:
Код: sql
1.
2.
3.
FROM
	Entity_1 e1
	LEFT JOIN e1.entity_2
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336272
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCoreсвязь один-к-одному по полю code
связи делают по ID записей или объектов.
В общем случае. Т.к. они не повторяются и уникальны.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336312
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCore,

может есть ошибки но примерно будет так

Код: java
1.
2.
3.
4.
5.
6.
7.
public class Entity1 {
    @Id
    private Integer id;
    private Integer var1;
    private Integer var2;
    @OneToOne
    private Entity2 entity2;



Код: java
1.
2.
3.
4.
5.
6.
7.
public class Entity2 {
    @Id
    private Integer id;
    private Integer var1;
    private Integer var2;
    @OneToOne(mappedBy = "entity2", fetch = FetchType.LAZY)
    private Entity1 entity1;
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336321
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, я знаю, что такую связь лучше делать по ID, но в том-то и дело, что данные таблицы не связаны по ID.
Музаффар, спасибо, попробую
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336323
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCore,

и то надо смотреть на направление связи (однонаправленная или двунаправленная) и ещё не все аннотации указал по требованию можете добавлять
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336327
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, раз по ID эти таблицы не совпадают, то нужно будет делать связь через третью таблицу
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336335
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCoreЯ так понимаю, раз по ID эти таблицы не совпадают, то нужно будет делать связь через третью таблицу
не совсем понял?
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336338
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар, Using a common join table (2 подход к решению задачи один-к-одному)
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336344
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCoreЯ так понимаю, раз по ID эти таблицы не совпадают, то нужно будет делать связь через третью таблицу
Есть хоть какой признак, что это одинаковые объекты?
Т.е. база с данными уже есть?
Если нету, то маппинг только на новые объекты. Старые удалить либо связывать.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336349
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Есть хоть какой признак, что это одинаковые объекты?Нет)
Petro123Т.е. база с данными уже есть?Есть таблицы с данными в базе.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336368
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCorePetro123Т.е. база с данными уже есть?Есть таблицы с данными в базе.

ну тогда создайте сущности из базы а не наоборот и будет Вам счастье...
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336371
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCore,

IDE сама будет создать сущности из уже имеющихся таблиц главное чтоб в БД все было нормально :)
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336378
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффарну тогда создайте сущности из базы а не наоборот и будет Вам счастье...Сущности тоже уже есть в программе и используются
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336379
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCorePetro123Есть хоть какой признак, что это одинаковые объекты?Нет)
Petro123Т.е. база с данными уже есть?Есть таблицы с данными в базе.
тогда задача не имеет решения.(Маппинг по факту).
Если только уточнять зачем вам этот маппинг).
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336384
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCore,
Есть набор ФИО и набор Квартиры.
Нужно проставить связи кто где живёт?
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336390
TopCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если только уточнять зачем вам этот маппинг).Для HQL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
	e1.field1,
	e2.field2
FROM
	Entity_X ex
	LEFT JOIN ex.entity_1 e1
	LEFT JOIN e1.entity_2 e2 -- но для этого должна быть связь в e1


Petro123Есть набор ФИО и набор Квартиры.
Нужно проставить связи кто где живёт?Что-то вроде этого
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336393
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCore,

может просто скриншот базы сделаете? а то телепатов тут нет были... хотя Петро собирается угадать :)
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336400
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCoreСейчас они никак не связаны: ни в базе ни в коде.
Это бессмысленное занятие. Либо у вас есть one2one в базе, и тогда он будет в коде. Либо у вас нет one2one в базе и тогда городить его в коде не за чем.
Разница между e1.getE2() и repository.getE2ByCode(e1.getCode()) незначительна.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336402
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCoreНо это неправильно, потому что тогда колонка не определена.
Это как?
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336406
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczTopCoreНо это неправильно, потому что тогда колонка не определена.
Это как?
думаю лучше посмотреть на ER-диаграмму...
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336418
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopCorePetro123Есть набор ФИО и набор Квартиры.
Нужно проставить связи кто где живёт?Что-то вроде этого
тогда по ГУИ будет выбор из списка справа ФИО и квартиры из списка слева.
Автоматом невозможно.
После выбора на кнопку Связать проставляете в до колонку ID другой таблы.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336420
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123После выбора на кнопку Связать проставляете в до колонку ID другой таблы.
проставляете ID таблы1 в доп.колонку в табле2.
После этого JOIN будет работать.
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336427
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

может правильно построить таблы в бд? и потом заняться с хибером?
...
Рейтинг: 0 / 0
Hibernate: OneToOne
    #39336436
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МузаффарPetro123,
может правильно построить таблы в бд? и потом заняться с хибером?
Не знаю.
Если у него миллион адресов и миллион телефонов в адресах без связи, то.....
Кто то это связать должен))
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: OneToOne
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]