AppFuse Сохранение двух новых объектов одновременно

Я пытаюсь сохранить 2 объекта в AppFuse (Struts2, Hibernate и Spring) одновременно. Вот пример (адрес и человек — новые объекты):

person.setAddress(address);
personManager.save(person);

Но это не работает, я получаю это исключение:

object references an unsaved transient instance - save the transient
instance before merge

Я должен сделать:

addressManager.save(address);
person.setAddress(address);
personManager.save(person);

В личной модели я объявил адрес следующим образом:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "person", cascade= CascadeType.ALL)
public Address getAddress() {
    return this.address
}

Есть ли способ сохранить эти новые объекты сразу?

Заранее спасибо..!


person jzafrilla    schedule 16.07.2012    source источник


Ответы (1)


Ниже может быть полезно для вас

Соблюдались ли вы, как указано в docs_oracle_javax_persistence_OneToMany.html< br/>
Пример 1. Ассоциация "один ко многим" с использованием дженериков

В классе клиентов:

@OneToMany(cascade=ALL, mappedBy="customer")
public Set getOrders() { return orders; }

В классе Орден:

@ManyToOne
@JoinColumn(name="CUST_ID", nullable=false)
public Customer getCustomer() { return customer; }


Пример 2. Ассоциация "один ко многим" без использования шаблонов

В классе клиентов:

@OneToMany(targetEntity=com.acme.Order.class, cascade=ALL,
        mappedBy="customer")
public Set getOrders() { return orders; }

В классе Орден:

@ManyToOne
@JoinColumn(name="CUST_ID", nullable=false)
public Customer getCustomer() { return customer; }

Вы можете сделать так, как указано в этом примере OneToManyTargetEntity.

Посмотрите на эти темы:
stackoverflow_4011472
stackoverflow_9032998

person Chandra Sekhar    schedule 16.07.2012