在 Spring Boot 中使用 DTO 传递 URL 源

问题描述

我在 Dto 里面有 Dto。如何在 Post 请求中传递资源 Url?我想传递已经在数据库中的 drawEvent 但不想在 drawEvent 中创建另一个条目。

{
    "serialNumber": "1","firstNumber": "1","secondNumber": "1","thirdNumber": "1","fourthNumber": "1","fifthNumber": "1","sixthNumber": "1","bonusNumber": "1","drawEvent": "/drawEvents/1"
}

这会导致 JSON 解析错误

这是结果实体

@Entity(name = "results")
@Data
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Result extends AbstractModel{

    @NotNull(message = "First Number can't be Empty")
    @Min(value = 1,message = "First number should be greater than or equal to 1")
    @Max(value = 45,message = "First number should be less than or equal to 45")
    private Integer firstNumber;

    @NotNull(message = "Second Number can't be Empty")
    @Min(value = 1,message = "Second number should be greater than or equal to 1")
    @Max(value = 45,message = "Second number should be less than or equal to 45")
    private Integer secondNumber;

    @NotNull(message = "Third Number can't be Empty")
    @Min(value = 1,message = "Third number should be greater than or equal to 1")
    @Max(value = 45,message = "Third number should be less than or equal to 45")
    private int thirdNumber;

    @NotNull(message = "Fourth Number can't be Empty")
    @Min(value = 1,message = "Fourth number should be greater than or equal to 1")
    @Max(value = 45,message = "Fourth number should be less than or equal to 45")
    private int fourthNumber;

    @NotNull(message = "Fifth Number can't be Empty")
    @Min(value = 1,message = "Fifth number should be greater than or equal to 1")
    @Max(value = 45,message = "Fifth number should be less than or equal to 45")
    private int fifthNumber;

    @NotNull(message = "Sixth Number can't be Empty")
    @Min(value = 1,message = "Sixth number should be greater than or equal to 1")
    @Max(value = 45,message = "Sixth number should be less than or equal to 45")
    private int sixthNumber;

    @NotNull(message = "Bonus Number can't be Empty")
    @Min(value = 1,message = "Bonus number should be greater than or equal to 1")
    @Max(value = 45,message = "Bonus number should be less than or equal to 45")
    private int bonusNumber;

    @OnetoOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
    @JoinColumn(nullable = false)
    DrawEvent drawEvent;
}

这是票务实体

@Data
@Entity(name = "tickets")
public class Ticket extends Result {

    @GeneratedValue(generator = "UUID",strategy = GenerationType.AUTO)
    @GenericGenerator(
            name = "UUID",strategy = "org.hibernate.id.UUIDGenerator"
    )
    @PrePersist
    protected void onCreate() {
        setSerialNumber(UUID.randomUUID());
    }

    private UUID serialNumber;

    @ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
    @JoinColumn(name = "draw_event_id")
    DrawEvent drawEvent;

    @ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
    @JoinColumn(name = "user_id")
    User user;
}

这是票Dto

@Getter
@Setter
public class TicketDto extends AbstractModel {
    private Integer firstNumber;
    private Integer secondNumber;
    private int thirdNumber;
    private int fourthNumber;
    private int fifthNumber;
    private int sixthNumber;
    private int bonusNumber;
    DrawEventDto drawEvent;
    UserDto user;
}

这是EventDto

@Getter
@Setter
public class DrawEventDto extends AbstractModel {
    private String title;
    private String imageUrl;
    LocalDateTime drawDate;
    private Integer noOfTicket;
    private BigDecimal estimatedPrize;
}

这是TicketController。

  @PostMapping
    public ResponseEntity<ResponseMessage<?>> save(@RequestBody TicketDto ticketDto) {
        ResponseMessage responseMessage = ticketService.save(ticketDto);
        return new ResponseEntity<ResponseMessage<?>>(responseMessage,HttpStatus.CREATED);
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)