Контроллер покоя:
@PostMapping("transaction")
public ResponseEntity<Transaction> init(@RequestBody Transaction transactionInput) {
Transaction transaction = transactionRepository.save(transactionInput);
return new ResponseEntity<>(transaction, HttpStatus.OK);
}
Субъект транзакции:
@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "transaction")
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
@JoinColumn(name="currency_id")
private Currency currency;
Денежная единица:
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@DynamicInsert
@DynamicUpdate
@Table(name = "currency")
public class Currency {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Length(max = 3)
private String sign;
@Length(max = 30)
private String name;
Запрос:
curl -X POST \
http://localhost:4000/transaction-service/transaction \
-H 'content-type: application/json' \
-d '{
"currency_id": 1
}'
И, очевидно, валюта равна нулю, и я получил эту ошибку:
не удалось выполнить оператор; SQL [н / п]; ограничение [currency_id];
вложенное исключение
org.hibernate.exception.ConstraintViolationException: не удалось
выполнить оператор
Есть ли способ автоматического сопоставления при отправке запроса с
"currency" = {"name" = "USD"}
Или как мне отправить этот запрос?