休眠验证-需要对特定端点进行验证



我正试图弄清楚如何在调用特定端点时应用某些字段验证规则。

我有一个invite实体,它有一个作为第二实体的List<applicant>。这为OneToMany关系中的邀请创建了一个表,为申请人创建了另一个表(这意味着你可以有一个有多个申请人的邀请(。

该邀请以";moveindate";并且嵌套的申请人具有";"名字"姓氏";以及";电子邮件";申请人。

然后,申请人将通过第二个端点单独提供额外的细节(即ssn(。

问题是,当提交邀请时,它不会填充申请人的所有必填字段(@NotNull((即SSN(。只有当申请人跟进并提交申请时,才会添加和要求此项。

我如何允许在提交邀请时创建申请人,但仅在申请人在第二个端点跟进并提交申请时要求@NotNull

@RestController
@Validated
public class invitecontroller {
@PostMapping("/v1/invite")
public void invite(@Valid @RequestBody invite invite){
}
}
@Entity
public class invite {

@Id private Long inviteid;
@NotNull private Date moveindate;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "inviteid")
private List<applicant> applicants;
}
@Entity
public class applicant {
@Id private Long applicantid;
@NotNull private Long inviteid;
@NotBlank private String firstname;
@NotBlank private String lastname;
@NotBlank private String email;
@NotNull private String ssn;
}

使用验证组:

public interface Invitation extends javax.validation.groups.Default {}
public interface Submission extends javax.validation.groups.Default {}

@RestController
@Validated
public class InviteController {
@PostMapping("/v1/invite")
public void invite(@Validated(Invitation.class) @RequestBody Invite invite){
}

@PostMapping("/v1/submit")
public void submit(@Validated(Submission.class) @RequestBody Invite invite){
}
}
@Entity
public class applicant {
@Id private Long applicantid;
@NotNull private Long inviteid;
@NotBlank(groups = Invitation.class) private String firstname; // only required for invitation
@NotBlank(groups = Submission.class) private String lastname; //only required for submission
@NotBlank private String email; // required for both, since it remains in the default group
@NotNull private String ssn;
}

相关内容

  • 没有找到相关文章

最新更新