Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Temp solution for now is to write custom validation for invoice field, so it checks only InvoiceAddressCheck.<br/> Here is the code I have </p> <p>Annotation: <br/></p> <pre><code>@Retention(RetentionPolicy.RUNTIME) @Documented @Constraint(validatedBy = {InvoiceAddressValidator.class }) public @interface InvoiceAddressChecker { String message() default "Invoice address incorrect."; Class&lt;?&gt;[] groups() default {}; Class&lt;? extends Payload&gt;[] payload() default {}; } </code></pre> <p>Validator:<br/></p> <pre><code>public class InvoiceAddressValidator implements ConstraintValidator&lt;InvoiceAddressChecker, Addresses&gt; { @Override public void initialize(InvoiceAddressChecker params) { } @Override public boolean isValid(Addresses invoiceAddress, ConstraintValidatorContext context) { // invoice address is optional if (invoiceAddress == null) { return true; } ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set&lt;ConstraintViolation&lt;Addresses&gt;&gt; constraintViolations; constraintViolations = validator.validate(invoiceAddress, Default.class, InvoiceAddressCheck.class); if (constraintViolations.isEmpty()) { return true; } else { context.disableDefaultConstraintViolation(); Iterator&lt;ConstraintViolation&lt;Addresses&gt;&gt; iter = constraintViolations.iterator(); while (iter.hasNext()) { ConstraintViolation&lt;Addresses&gt; violation = iter.next(); context.buildConstraintViolationWithTemplate(violation.getMessage()).addNode( violation.getPropertyPath().toString()).addConstraintViolation(); } return false; } } } </code></pre> <p>And model annotation:<br/></p> <pre><code>@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "cus_invoice_adr_id", nullable = true) @Cascade(value = CascadeType.ALL) @InvoiceAddressChecker public Addresses getInvoiceAddress() { return invoiceAddress; } </code></pre> <p>It's not really great solution, but it does what I need. If you figure out better solution, please let me know :)</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload