1

テーブルの関係

上記の図は、テーブル間の関係を示しています。

AddressType テーブルには、mailinghomeworkなどの静的な値が含まれています。

AddressTypeRelモデル クラスには、多対 1 の注釈を持つAddressTypeオブジェクトがあります。

AddressTypeRel.java

public class AddressTypeRel implements java.io.Serializable{
.......

private AddressType addressType=new AddressType();
.......

@ManyToOne()
@LazyCollection(LazyCollectionOption.FALSE)
@JoinColumn(name="typeId", insertable=false, updatable=false, nullable=false)
@NotFound(action = NotFoundAction.IGNORE)
public AddressType getAddressType() {
   return addressType;
}

public void setAddressType(AddressType addressType) {
   this.addressType = addressType;
}
......
}

Addressテーブルに保存した後、アドレスとaddressIdのタイプ( mailing/billing ) もAddressTypeRelに保存する必要がありますが、保存できません。救おうとしている間に

AddressTypeRel addressTypeRel=new AddressTypeRel();
addressTypeRel.setAddressId(i) //i=5 for example
addressTypeRel.setTypeId(j)    //j=4 for example
hibernatetemplate.save(addressTypeRel);

発生するエラーは次のとおりです。

オブジェクトは保存されていない一時インスタンスを参照しています - フラッシュする前に一時インスタンスを保存してください: com.sample.AddressType

4

2 に答える 2

0

保存が AddressType にカスケードしようとするように変更する必要があり、 on に設定したのでそれを@ManyToOne()無視します。@ManyToOne(cascade = CascadeType.ALL)insertable=false, updatable=false@JoinColumn

于 2014-01-09T11:53:16.233 に答える