【发布时间】:2016-02-14 13:54:16
【问题描述】:
我有以下实体类:
@Entity
@Table(name="reporteddevicedata", schema="schemaName")
public class MobileDeviceData {
@EmbeddedId
MobileDeviceDataId mobileDeviceDataId;
@Column(name="activitydetecteddate")
private ZonedDateTime activityDetectedDate;
public void setFlagId(int flagId) {
mobileDeviceDataId.setFlagId(flagId);
}
......
}
@Embeddable
class MobileDeviceDataId implements Serializable {
@Column(name="clientid")
private int clientId;
@Column(name="flagid")
private int flagId;
}
我的Controller 代码如下所示:
@RequestMapping(value="/mobile/device", method = RequestMethod.PUT)
public ResponseEntity<Object> flagDevice (@RequestBody List<MobileDeviceData> deviceInfoList) {
// code here
}
最初我的Entity 类在clientId 上只有一个主键@ID,效果很好。我会进行 REST 调用,它会按预期填充 MobileDeviceData 类。然后我使用@Embeddable 和@EmbeddableId 注释切换到复合ID,现在@RequestMapping 无法填充flagId 参数。现在,当我进行 REST 调用时,我得到了 mobileDeviceDataId 的空指针异常,因此它在被调用时无法更新该字段并引发空指针异常。
所以我的问题是,如何获得@Embeddable 类的实例?我可以用new 创建一个吗?我不确定这会带来什么影响,因为 Spring 可能希望自己创造这个价值?通过RequestMapping 更新此字段的“正常”方式是什么?
【问题讨论】:
-
您的错误显示在哪里?当您尝试放置数据时会发生这种情况吗?添加一些您发送的示例请求正文,然后我可能会帮助您弄清楚
-
@OskarDajnowicz - 我已经更新了这个问题。将 Spring 日志设置为调试向我展示了错误是什么。所以现在我只想知道如何更新 Embeddable 类中的字段的预期方式或“最佳实践”。
标签: java spring hibernate spring-mvc spring-data