0

我正在尝试一次在 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
}

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

提前致谢..!

4

1 回答 1

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

于 2012-07-16T12:35:15.743 回答