Как отправить определенный запрос POST в API с помощью Spring Boot - PullRequest
0 голосов
/ 07 июня 2018

Я хочу создать метод Post для моего контроллера для моего загрузочного приложения Spring, у меня есть Entity Alert, с перечисленными ниже элементами, но мне нужно отправить определенный формат запроса в мой API, я пытался использовать метод save ()но это не работает, кто-то знает, как указать каждый элемент для запроса Json?а также как перейти к следующему элементу, когда мы используем Serializable?Большое спасибо за помощь

{
  "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;

И за мой контроллер:

@RestController
@RequestMapping("/api/alerts")
public class AlertsController extends AbstractController{
         @Autowired
         private AlertRepository alertRepository;
         @PostMapping()
         public void createAlert(@RequestBody Alert alert) {
                    alertRepository.save(alert);
         }
 }

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Скорее всего, вам нужно создать правильные объекты устройства.

{
    devices:[
        {
        "deviceEUIs": "1122233344"
        },{
        "deviceEUIs": "1122233355"}
    ]
}

за ошибку, которую вы опубликовали в комментарии выше.добавить это к сущности.

 @PrePersist
 @PreUpdate
 public void onUpdate() {
      lastUpdate= new Date();
 }

здесь есть решение здесь , которое показывает, как вы можете использовать это в суперклассе и наследовать все классы, для которых вы хотите иметь эти поля.

0 голосов
/ 07 июня 2018

Вы пытались использовать:

@ Column (nullable = false)
@Temporal (TemporalType.TIMESTAMP)
@LastModifiedDate // это автоматически генерирует новую дату при изменении объекта.
private Дата обновленияAt;

0 голосов
/ 07 июня 2018

Вы делаете все правильно, но просто ничего не делаете для своего пустого экземпляра оповещения и, следовательно, ничего не публикуете.Чтобы опубликовать что-то, вам нужно будет сделать что-то вроде alert.setSomething (что-то), а затем alertRepository.save (alert), потому что в данный момент вы ничего не сохраняете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...