私の従業員と近親者の両方が住所を持っているデータベースレイアウトがあります。
したがって、私のキーは次のように配置されます。
Address
----------
addressID
Employee
----------
employeeID
addressID
NextOfKin
----------
nextOfKinID
addressID
MyBatisでは、次のように関連付けを設定しています。
<resultMap id="employeeMap" type="employee">
<id column="employeeID" property="employeeID" />
<association property="address" column="addressID" resultMap="addressMap" />
</resultMap>
<resultMap id="addressMap" type="address">
<id column="addressID" property="addressID" />
</resultMap>
これは挿入ステートメントです。employeeIDは自動増分なので、省略しました。
<insert id="insert">
INSERT into Employees (addressID)
VALUES (#{address.addressID})
</insert>
従業員オブジェクト:
Employee{
int employeeID
Address address
}
したがって、従業員が登録してアカウントを設定するとき、彼らはまだ住所を持っていません。したがって、addressIDはnullである必要があります。
レコードを挿入すると、「列'addressID'をnullにすることはできません」というエラーが表示されます。そして、挿入ステートメントからそれを取り出すと、「フィールド'addressID'にはデフォルト値がありません」というエラーがスローされます。
従業員を追加して、後で住所と関係を追加できるようにしたいと思います。
これはテーブル/関係をレイアウトするための悪い方法ですか?アドレスをnullとして保存する方法が見つからないようです。