java - Spring Boot 未验证实体上的嵌入式对象

标签 java spring-boot

我正在尝试向我的 REST API 发送 POST 请求。所有字段,如名称、描述等......根据需要工作,并使用@NotNull 等 validator 正确验证。但是,当涉及到嵌入对象时,没有任何字段正在验证。当没有任何位置字段被传递并且只是将它们默认为 0 时,它不会显示错误

我已经尝试使用之前帖子中提到的 @Valid 注释,但是这似乎仍然没有奏效。

实体

@Entity
@Table(name = "loos")
public class Loo implements Serializable {

    private static final long serialVersionUID = 9098776609946109227L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(name = "uuid", columnDefinition = "BINARY(16)")
    private UUID uuid;

    @NotNull(message = "Name cannot be null")
    @Column(name = "name")
    private String name;

    @NotNull(message = "Description cannot be null")
    @Type(type="text")
    @Column(name = "description")
    private String description;

    @NotNull(message = "Location cannot be null")
    @Embedded
    @AttributeOverrides({ @AttributeOverride(name = "lat", column = @Column(name = "location_lat")),
    @AttributeOverride(name = "lng", column = @Column(name = "location_lng")) })
    @Valid
    private LatLng location;


纬度类


@Embeddable
public class LatLng {

    @NotNull(message = "Lat cannot be null")
    private double lat;

    @NotNull(message = "Lat cannot be null")
    private double lng;

    protected LatLng() {
    }

    public double getLat() {
        return this.lat;
    }

    public double getLng() {
        return this.lng;
    }

}


我本来希望 LatLng 类内部的错误消息会说“LatLng - lat is required”或类似的东西。相反,操作将继续,只是将它们的值默认为 0

最佳答案

对于原始数据类型,它将具有默认值。在您的情况下,double 将具有默认值 0.0d。所以当使用 NotNull 检查该值是否有效时,它将有效。

您可以将原始数据类型更改为它们的 Wrapper 类,如下所示。 (双到双)

@NotNull(message = "Lat cannot be null")
private Double lat;

@NotNull(message = "Lat cannot be null")
private Double lng;

关于java - Spring Boot 未验证实体上的嵌入式对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57406946/

相关文章:

java - 为什么 slf4j 记录器有时会打印出父线程,即使代码应该由子线程执行?

java - Springboot嵌入mongo测试

java - Spring Boot Autowiring 时的空指针

java - 将 Java 类文档从代码读取到 GUI 中

java - 如何让图像随机移动?

java - 从 SVN 导入 JEdit 时出现警告

spring - Maven:trustAnchors 参数必须非空且为 'parent.relativePath' @ InvalidAlgorithmParameterException @ Non-resolvable Parent POM

spring - 在 Spring Boot 中使用自定义 token 进行身份验证

java - 如何将pdf/byte[]消息阅读器添加到exchangeStrategies,不支持内容类型 'application/pdf'

java - redis 缓存中的自定义名称