У меня есть 2 сущности, представленные ниже:
@Entity
public class Product {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "product_id")
private String id;
@Column
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS")
private Timestamp timestamp;
@OneToOne(mappedBy = "product", cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
private Stock stock;
}
@Entity
public class Stock {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "stock_id")
private String id;
@Column
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS")
private Timestamp timestamp;
@Column
private int quantity;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id")
private Product product;
}
Я собираюсь вставить объект продукта в базу данных, поэтому, если позже я использую команду GET
, я смогу получитьJSON
аналогично:
{
"productId": “string", // id of the requested product, e.g. "vegetable-123"
"requestTimestamp": “dateTime", // datetime in UTC when requested the stock
"stock": {
"id": "string",
"timestamp":
"dateTime" "quantity": "integer"
}
}
API для вызова POST
представлен ниже:
@RestController
@RequestMapping("/api/v1/products")
public class ProductAPI {
@Autowired
private ProductService service;
@PostMapping(value = "/createProduct", consumes = "application/json", produces = "application/json")
public ResponseEntity<Product> createProduct(@RequestBody Product product) {
service.save(product);
return ResponseEntity.status(HttpStatus.CREATED).body(product);
}
}
Предоставлен запрос cURL
,
$ curl -i -X POST -H "Content-Type:application/json" -d "{\"id\" :
\"Product ID\",\"timestamp\" : \"2017-07-16 22:54:01.754\",\"id\":
\"Stock ID\", \"timestamp\":\"2000-07-16 22:54:01.754\", \"quantity\":
\"250\"}" http://localhost:8080/api/v1/products/createProduct
Команда выполнена успешно и выдает результат,
HTTP/1.1 201
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 15 Feb 2019 09:10:59 GMT
{"timestamp":"2000-07-16 22:54:01.754"}
Однако записи базы данных неверны,
Как правильно написать запрос cURL POST?
С помощью команды CURL я хотел бызаполните таблицы данными, и ответ должен вернуть то же самое,
{"productId": "Идентификатор продукта" "requestTimestamp": "2017-07-16 22: 54: 01.754"
"сток": {
"id": "Stock ID",
"timestamp": "2000-07-16 22:54:01.754",
"quantity": "250"
}}