0

AppFuseに2つのエンティティ(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
}

この新しいエンティティを一度に保存する方法はありますか?

前もって感謝します..!

4

1 に答える 1

1

以下はあなたに役立つかもしれません

docs_oracle_javax_persistence_OneToMany.htmlに示されているように休耕しましたか?例1:ジェネリックを使用した1対多の関連付け

顧客クラス:

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

Orderクラスの場合:

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


例2:ジェネリックを使用しない1対多の関連付け

顧客クラス:

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

Orderクラスの場合:

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

この例OneToManyTargetEntityで与えられているように行うことができます。

これらのスレッドを見てください:
stackoverflow_4011472
stackoverflow_9032998

于 2012-07-16T12:35:15.743 に答える