javax验证不验证notNull

San*_*Rey 2 java spring spring-boot spring-data-couchbase

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

我有这个对象

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Hostel<T> {

    @NotNull
    @JsonProperty("_location")
    private T location;

}
Run Code Online (Sandbox Code Playgroud)

还有另外一个

@Document
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(of = { "id" })
@Builder
public class HTMDoc {

    @Id
    private String id;
    @NotNull
    @Field
    private Hostel hostel;

}
Run Code Online (Sandbox Code Playgroud)

在服务上

public HTMDoc create(@Valid HTMDoc doc) {
    return repository.save(doc);
}
Run Code Online (Sandbox Code Playgroud)

在测试中

service.create(new HTMDoc());
Run Code Online (Sandbox Code Playgroud)

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

 org.springframework.data.mapping.MappingException: An ID property is needed, but not found/could not be generated on this entity.
Run Code Online (Sandbox Code Playgroud)

Geo*_*rge 7

您需要@org.springframework.validation.annotation.Validated在服务类上使用批注以启用验证。

@Validated
@Service
public class DocService {
  public HTMDoc create(@Valid HTMDoc doc) {
    return repository.save(doc);
  }
}
Run Code Online (Sandbox Code Playgroud)