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
から削除できません