Переходное сохранение - PullRequest
       2

Переходное сохранение

2 голосов
/ 09 октября 2010

У меня вопрос по поводу спящего режима.

Я хочу сохранить небольшой график отдельных объектов:

session.save(new City(1));

Peron p = new Person(new City(1), new Street(2));
session.save(p);

Hibernate сказал мне, что город временный, но я делаю:

session.refresh(city);
session.refresh(street);
session.update(p);

Есть идеи?

1 Ответ

3 голосов
/ 09 октября 2010

Либо сделайте что-то вроде этого:

City city = new City(1);
session.save(city);

Street street = new Street(2);
session.save(street);

Peron p = new Person(city, street);
session.save(p);

session.flush();

Или настройте каскадное каскадирование операции save.Например, с аннотациями:

@Entity
public class Person {
    @Id @GeneratedValue
    private Long id;

    @ManyToOne(cascade = CascadeType.PERSIST) // or ALL to cascade all operations
    private City city;

    // ...
}

И затем код становится:

City city = new City(1);
Street street = new Street(2);
Person p = new Person(city, street);
session.save(p);
session.flush();

Ссылки

  • Спецификация JPA 1.0
    • Раздел3.2.1 «Сохранение экземпляра сущности»
    • Раздел 9.1.22 «Аннотация ManyToOne»
  • Справочное руководство по ядру Hibernate
  • Справочное руководство по Hibernate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...