Возможно ли это в Hibernate 3.2 - PullRequest
1 голос
/ 17 ноября 2009

Подумайте, 2 сущности сопоставлены OneToOne. Человек и Автомобиль. Человек может иметь автомобиль.

У нас есть объект Person, загруженный из базы данных. Я хочу сменить личную машину. Проблема в том, что у меня нет загруженного объекта Car для использования. Вместо этого у меня есть только идентификатор автомобиля. Используя этот идентификатор автомобиля, возможно ли установить Car's Person на тот автомобиль, который требуется (у нас есть его id), без загрузки / выбора любого автомобиля из БД? И чем спасти этого Человека и это машина для БД. Мне не нужна никакая информация Мне нужно только сказать Hibernate, что я хочу, чтобы Person's Car был автомобилем с таким идентификатором.

Возможно ли это? Извините, если мой английский sux. Спасибо за совет.

1 Ответ

0 голосов
/ 17 ноября 2009

Это зависит от того, как отображается ваша ассоциация.

Предполагая, что он сопоставлен через внешний ключ (от Person to Car) И вы уверены, что «новый» экземпляр автомобиля действительно существует, вы можете использовать метод Session.load(), чтобы вернуть постоянный прокси нового Субъект автомобиля, затем установите его на Персоне и сохраните Персона. Автомобиль не должен быть загружен до тех пор, пока ассоциация не получена с нетерпением:

Person person = ...;
Car newCar = session.load(Car.class, newCarId);
person.setCar(newCar);
session.saveOrUpdate(person);

Если ваша ассоциация отображается с помощью первичных ключей, установка новой машины невозможна.

С другой стороны, человек-машина технически является отношением один-ко-многим (человек = владелец) или многими-ко-многим (человек = водитель), а не один-к-одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...