Неправильно неверное значение при использовании Hibernate ScriptAssert - PullRequest
0 голосов
/ 23 ноября 2018

Я создал приложение Spring Boot, DATA Rest, Hibernate.

Я добавил к своему компоненту @ScriptAssert, и он работает нормально, но, к сожалению, в отличие от других валидаторов, он возвращает объект как недопустимое значение.

Это мой бин:

public class DocumentRow extends AbstractEntity {
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    private Document document;

    @JsonDeserialize(using = ProductUriDeserializer.class)
    @Any(fetch = FetchType.EAGER, metaDef = "ProductDocumentRowDef", metaColumn = @Column(name = "productGroup"), optional = true)
    @AnyMetaDef(name = "ProductDocumentRowDef", metaType = "string", idType = "long", metaValues = {@MetaValue(value = "OL", targetEntity = OphthalmicLens.class),
            @MetaValue(value = "F", targetEntity = Frame.class), @MetaValue(value = "CL", targetEntity = ContactLens.class)})
    @JoinColumn(name = "product_id")
    private Product product;

    // The description of the product/note
    @Size(max = 255)
    @NotBlank
    @Column(nullable = false)
    private String description;

    // Reference to another document row (order/ddt/)

    @NotNull
    @Min(1)
    @Column(nullable = false)
    private int qty = 1;

    // taxable amount (without taxes)
    @NotNull //    @Min(value = 0)
    @Column(nullable = false, scale = 2)
    private BigDecimal unitPrice = BigDecimal.ZERO;

    // discount on taxable amount
    @NotNull
    @Min(value = 0)
    @Max(value = 99)
    @Column(nullable = false, scale = 2)
    private BigDecimal percentageDiscount = BigDecimal.ZERO;

    // (unit price * qty) - percentageDiscount% on that amount
    @NotNull
    @Min(value = 0)
    @Column(nullable = false, scale = 2)
    private BigDecimal amount = BigDecimal.ZERO;

    @JsonDeserialize(using = TaxRateUriDeserializer.class)
    @ManyToOne(fetch = FetchType.EAGER, optional = true)
    private TaxRate taxRate;

    // The total amount of taxes on taxable amount (unit price - percentageDiscount%) * qty)
    @NotNull
    @Min(value = 0)
    @Column(nullable = false, scale = 2)
    private BigDecimal taxAmount = BigDecimal.ZERO;

    // Total amount (amount+taxAmount)
    @Formula(value = "amount+taxAmount")
    private BigDecimal totalAmount;

    //says if the row is a note
    @NotNull
    @Column(nullable = false, columnDefinition = "BIT DEFAULT 0")
    private boolean note = false;

, а это TaxRate:

public class TaxRate extends AbstractEntity {

    @NotBlank
    @Column(nullable = false)
    private String name;

    @NotBlank
    @Column(nullable = false, unique = true)
    private String code;

    @NotNull
    @Min(value = 0)
    @Max(value = 99)
    @Column(nullable = false, scale = 2)
    private BigDecimal rate;

    @Enumerated(EnumType.STRING)
    private TaxType type;

    @NotNull
    @Column(nullable = false, columnDefinition = "BIT DEFAULT 0")
    private boolean preset = false;

Это @ScriptAssert:

@ScriptAssert(lang = "javascript", script = "_.note==false?_.taxRate!=null:true", alias = "_", reportOn = "taxRate", message = "{documentrow.taxrate.mandatory}")

и этоэто ответ, который я получил от моего контроллера покоя:

{
  "errors" : [ {
    "entity" : "test.server.model.accounting.documents.DocumentRow",
    "property" : "taxRate",
    "invalidValue" : "test.server.model.accounting.documents.DocumentRow@95104f01",
    "message" : "{documentrow.taxrate.mandatory}"
  } ]
}

Как вы можете видеть, invalidValue само по себе DocumentRow, вместо этого оно должно быть TaxRate.Как я могу настроить invalidValue, возвращаемое из ScriptAssert?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...