Search code examples
springhibernatejpaappfuse

AppFuse Save two new entities at once


I'm trying to save 2 entities in AppFuse (Struts2, Hibernate and Spring) at once, Here is an example (Address and person are new objects):

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

But this doesn't work, i get this exception:

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

I have to do:

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

In person model i have declared Address like that:

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

Are there any way to save this new entities at once?

Thanks in advance..!


Solution

  • Below may helpful for you

    Have you fallowed as given in docs_oracle_javax_persistence_OneToMany.html

    Example 1: One-to-Many association using generics

    In Customer class:

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

    In Order class:

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


    Example 2: One-to-Many association without using generics

    In Customer class:

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

    In Order class:

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

    You can do as given in this Example OneToManyTargetEntity.

    Look at these threads:
    stackoverflow_4011472
    stackoverflow_9032998