休止状態とJPAでSpring MVCを使用しています。Agentという別のクラスに継承される Person クラスがあります。マッピングは次のように実装されます。
@Entity
@Table(name = "Person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person extends Auditable implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PersonId")
protected Long id;
//other variables
...
}
@Entity
@PrimaryKeyJoinColumn(name = "PersonId")
public class Agent extends Person implements Serializable {
//additional agent specific variables go here
...
}
新しいデータの保存はスムーズで、問題はありません。ただし、データを編集すると、id 値を除くすべてがコントローラー メソッドのモデル属性にバインドされます。Chrome の開発者ツールを使用して、ブラウザから id が他のアイテムと一緒に送信されたことを確認しました。ただし、コントローラーの id フィールドは常に null であるため、データは更新されません。これは私のコントローラーメソッドがどのように見えるかです:
@RequestMapping(value = "register", method = RequestMethod.POST)
public @ResponseBody CustomAjaxResponse saveAgent(ModelMap model, @ModelAttribute("agent") @Valid Agent agent, BindingResult result) {
...
}
Personクラスから継承する他のクラスがあり、そこでも同様の問題に直面しているため、おそらく継承マッピングに問題があると思われます。
助けてください!