0

Hibernateを使用して2つのマップされたクラスがあります。

SETTLEMENT_MODEL_GROUP(親):

@Entity
@Table(name = "MODEL_GROUP")
public class SettlementModelGroup
{

//omitted some not fields

@OneToMany( fetch = FetchType.LAZY, mappedBy = "modelGroup" )
private List<SettlementModel> settlementModels;

}

SETTLEMENT_MODELの子:

@Entity
@Table(name = "MODEL")
public class SettlementModel
{

//omitted some not fields

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "MODEL_GROUP_ID", insertable = false, updatable = false, nullable = false)
private SettlementModelGroup modelGroup;

}

今、私はデータベースへの単純な挿入を行っています:

  SettlementModel model = new SettlementModel();
  SettlementModelGroup settlementModelGroup = modelManager.getModelGroup( modelGroupId );

  //setting other fields for model
  model.setModelGroup( settlementModelGroup );

  sessionFactory.getCurrentSession().save( model );

私に与える:

SQL Error: 1400, SQLState: 23000
ORA-01400: cannot insetr NULL into ("MYSCHEMA"."MODEL"."MODEL_GROUP_ID")

hibernateが存在して作成されているのに親IDを挿入しないのはなぜですか?標準出力でそれを与えても、適切なIDを返します...

さらに、展開中に休止状態エラーが発生するため、 SettlementModelinsertable = false, updatable = falseから削除できません

4

2 に答える 2

2

親から@OneToMany cascade = CascadeType.ALL
削除するために追加nullable = false

于 2012-08-28T13:12:45.230 に答える
1

cascade = CascadeType.ALLoneToMany関係を定義したhbmファイルに使用してみてください

于 2012-08-28T13:16:12.200 に答える