我想为我的Spring启动应用程序创建一个Post方法,我有一个实体警报,下面的元素,但我需要向我的API发送一个特定的请求格式,我尝试使用save()方法但它不起作用,有人知道如何为Json请求指定每个元素吗?以及当我们使用Serializable时如何转到下一个元素?非常感谢你的帮助
Customer | Attribute
A | 3
B | 2
C | 0
对于我的控制器:
{
"deviceEUIs": [
"1122233344"
],
"alertModes": [
{
"type": "MOTION",
"notifyByEmail": true,
"notifyBySMS": true,
"notifyOnInterface": true
}
]
}
@Entity
@Table(name = "Alert")
public class Alert implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(columnDefinition = "BINARY(16)")
private UUID alertRef;
@OneToMany(mappedBy = "alert", cascade = CascadeType.ALL)
private Set<AlertModes> alertModes;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable
private Set<Subscriber> subscribers;
@ManyToMany(mappedBy = "alerts")
private Set<Device> devices;
@Column(name = "last_update", columnDefinition = "DATETIME", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date lastUpdate;
答案 0 :(得分:0)
你正在正确地做所有事情,但只是没有对你的空警报实例做任何事情,因此没有发布任何内容。为了发布你需要做一些事情,比如alert.setSomething(something)然后是alertRepository.save(alert)因为你当前没有保存任何东西
答案 1 :(得分:0)
您很可能需要创建正确的设备对象。
{
devices:[
{
"deviceEUIs": "1122233344"
},{
"deviceEUIs": "1122233355"}
]
}
您在上述评论中发布的错误。将此添加到实体。
@PrePersist
@PreUpdate
public void onUpdate() {
lastUpdate= new Date();
}
有一个解决方案here,它向您展示如何在超类中使用它,并继承您想要拥有这些字段的所有类。
答案 2 :(得分:0)
您是否尝试过使用:
@Column(可为空= FALSE)
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate //这会在对象更改时自动生成新日期
private Date updatedAt;