AppFuse一次保存两个新实体

时间:2012-07-16 08:09:34

标签: spring hibernate jpa appfuse

我正在尝试在AppFuse(Struts2,Hibernate和Spring)中同时保存2个实体, 这是一个例子(地址和人是新对象):

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
}

有没有办法一次保存这些新实体?

提前致谢..!

1 个答案:

答案 0 :(得分:1)

以下可能对您有帮助

你是否按照docs_oracle_javax_persistence_OneToMany.html中的规定进行了休憩 示例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