我试图同时在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
}
有没有办法一次保存这些新实体?
提前感谢。。!
以下内容可能对您有所帮助
您是否已按照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