javax验证不验证notNull

我有一个 springBoot 2.1.9.RELEASE 应用程序,它使用 Spring Data for Couchbase


我有这个对象


@Data

@AllArgsConstructor

@NoArgsConstructor

public class Hostel<T> {


    @NotNull

    @JsonProperty("_location")

    private T location;


}

还有这个


@Document

@Data

@AllArgsConstructor

@NoArgsConstructor

@EqualsAndHashCode(of = { "id" })

@Builder

public class HTMDoc {


    @Id

    private String id;

    @NotNull

    @Field

    private Hostel hostel;


}

关于服务


public HTMDoc create(@Valid HTMDoc doc) {

    return repository.save(doc);

}

在测试中


service.create(new HTMDoc());

但是当我保存时,我收到了此错误,而不是旅馆字段中的验证 NotNull


 org.springframework.data.mapping.MappingException: An ID property is needed, but not found/could not be generated on this entity.


肥皂起泡泡
浏览 118回答 4
4回答

慕盖茨4494581

您需要@org.springframework.validation.annotation.Validated在服务类上使用注释来启用验证。@Validated@Servicepublic class DocService {&nbsp; public HTMDoc create(@Valid HTMDoc doc) {&nbsp; &nbsp; return repository.save(doc);&nbsp; }}

侃侃无极

将以下注释添加到 id 中并尝试一下:@Id@GeneratedValue(strategy = GenerationStrategy.UNIQUE)private String id;有关注释的更多信息@GeneratedValue可以在这个很好的答案中找到:Spring generatedValue注释的用法

翻翻过去那场雪

请在您的 id 字段中添加以下语法@Data@AllArgsConstructor@NoArgsConstructorpublic class Hostel<T> {&nbsp; &nbsp; @Id&nbsp; &nbsp; @GeneratedValue(strategy = GenerationType.IDENTITY)&nbsp; &nbsp; @Column(name = "id", nullable = false, updatable = false)&nbsp; &nbsp; private Long id;&nbsp; &nbsp; @NotNull&nbsp; &nbsp; @JsonProperty("_location")&nbsp; &nbsp; private T location;}还可以在服务类中使用 validate 注释。@Validated@Servicepublic class DocService {&nbsp; public HTMDoc create(@Valid HTMDoc doc) {&nbsp; &nbsp; return repository.save(doc);&nbsp; }}

ABOUTYOU

将注释放在 getter 上。也许私有字段不支持验证。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java