我正在尝试在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
}
有没有办法一次保存这些新实体?
提前致谢..!
答案 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中的说明执行操作。