我正在使用带有休眠和JPA的spring mvc。我有一个Person类,它由另一个名为Agent的类继承。映射实现如下:
@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 字段始终为空,因此数据不会更新。这是我的控制器方法的样子:
@RequestMapping(value = "register", method = RequestMethod.POST)
public @ResponseBody CustomAjaxResponse saveAgent(ModelMap model, @ModelAttribute("agent") @Valid Agent agent, BindingResult result) {
...
}
我怀疑问题可能出在我的继承映射上,因为我有其他类继承自Person类,我也面临类似的问题。
请帮忙!