Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Установка связи ManyToOne через ID в Hibernate / 9 сообщений из 9, страница 1 из 1
05.11.2013, 13:04:21
    #38452878
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
Здравствуйте. Подскажите пожалуйста можно ли в Hibernate установить связь ManyToOne через ID а не через объект. Например есть сущность User (One) и Post (Many). И нужно чтобы связь устанавливалась не через объект postDao.setUser(user) а через ID postDao.setUser(id). Можно ли так?
...
Рейтинг: 0 / 0
05.11.2013, 13:16:02
    #38452891
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
Можно. Просто @ManyToOne не используй и всё. Замапь Foreign Key как обычное Long свойство.
...
Рейтинг: 0 / 0
05.11.2013, 13:20:45
    #38452901
carper
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
Во-первых, совершенно не понял при чем здесь DAO?
Связь устанавливается на уровне сущности (Entity).

Во-вторых, если я верно понимаю, то ID пользователя у вас уже существует в таблице, и связанной с ним сущности, POSTS.

Если так, и вам нужен только ID, то ничего делать не надо, "связь" уже есть.
Более того, исходя из вашей постановки задачи - вам не хочется тянуть более никаких полей из USER, кроме ID, которое уже и так есть в POSTS.
Если же имелось в виду что-то вроде экономии на объектах, то для этого есть lazy инициализация.
...
Рейтинг: 0 / 0
05.11.2013, 16:25:19
    #38453312
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
Blazkowicz , а что если связь ManyToOne нужна. Я пробовал добавлять свойство userId в Post но связь ManyToOne не удалял. Так не работает добавление.
...
Рейтинг: 0 / 0
05.11.2013, 16:29:06
    #38453319
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
z3r9 Blazkowicz , а что если связь ManyToOne нужна. Я пробовал добавлять свойство userId в Post но связь ManyToOne не удалял. Так не работает добавление.
У вас куча разнообразных проблем из-за непонимания ORM, которые вы все характеризовали термином "не работает", и при этом спрашиваете, как сделать так чтобы ваше решение проблемы работало. Другие решения принципиально не рассматриваются?
Почему не подходит lazy свойство?
Почему обязательно по id надо грузить?
При чем тут "добавление", если вопрос был про загрузку.
Объясните проблему полностью. А не кусками.
...
Рейтинг: 0 / 0
05.11.2013, 16:33:21
    #38453330
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
BlazkowiczПри чем тут "добавление", если вопрос был про загрузку.

Это из другого поста. К этому отношения не имеет.
...
Рейтинг: 0 / 0
05.11.2013, 17:12:38
    #38453396
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
Blazkowicz , использую JSF и хочу при добавлении записи установить связь @ManyToOne. В JSF в теге <h:selectOneMenu/> используя конвертер можно установить связь @ManyToOne через объект . Но мне не нужен выбор а нужно просто скрыто задать пользователя или еще что-то. У кнопки есть тег <f:setPropertyActionListener /> но в нем нельзя использовать конвертер вот и хочу через ID установить связь либо в бине конвертировать.

Так можно сделать используя тег <h:selectOneMenu/> но мне так не подходит:
Код: java
1.
2.
3.
4.
5.
//User user= new User ();
//user.setUserName("z3r9");

Post post= new Post ();
post.setUser(user);



Пробовал создавать свойство userId в Post и добавлять так:

Код: java
1.
2.
3.
4.
5.
//User user= new User ();
//user.setUserName("z3r9");

Post post= new Post ();
post.setUserId(userId );



Не работает. Наверное так просто нельзя делать чтобы и @ManyToOne и само поле было в сущности Post.

Что касается lazy инициализации. То ли вопрос мой не понят, то ли я не понимаю как использовать lazy инициализацию для добавления.
...
Рейтинг: 0 / 0
05.11.2013, 17:27:55
    #38453437
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
z3r9,
Вот этого должно быть достаточно.
Код: java
1.
post.setUser(new User(userId));
...
Рейтинг: 0 / 0
05.11.2013, 22:15:00
    #38453751
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установка связи ManyToOne через ID в Hibernate
Blazkowicz , спасибо большое за помощь, раньше так пробовал. Хоть не совсем то, то есть тут все равно идет конвертация id в объект. То есть придется в бине переопределять метод save везде где нужны связи типа пользователя. А так если можно было бы на JSF страничке задать, не пришлось бы лишний код писать в бине. Ну ладно, и так сойдет может в новых версиях JSF сдделают конвертер в теге <f:setPropertyActionListener />.

Спасибо всем за помощь.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Установка связи ManyToOne через ID в Hibernate / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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