Jordi
Jordi

Reputation: 23277

java and hibernate validation: validate two method parameters

Here my controller:

@PutMapping("{id}")
public Mono<QdCFPresenter> save(
    Long id,
    @RequestBody @Valid @NotNull QdCFPresenter qdcf
) {
    return this.qdcfService.store(qdcf);
}

I need to validate that id and qdcf.id are equals.

The way I need to accomplish that is using javax.validation.

We have all validation rules all encapsulated using javax.validation validations.

For example:

public class QdCFPresenter {

    private Long id;

    @NotNull
    private Long codi;

}

So, is there any way to get it USING javax.validation validations?

Upvotes: 0

Views: 274

Answers (1)

Andriy Slobodyanyk
Andriy Slobodyanyk

Reputation: 2085

I need to validate that id and qdcf.id are equals.

I would disagree with this statement.

I would suggest to separate the concepts and have 3 different classes:

  • an incoming request DTO (QdCFPresenter in your case), it shouldn't contain id as it is a part neither of POST nor PUT request
  • a domain model (with id and code)
  • an outgoing response DTO (also with id and code)

Two last ones look similar but have different responsibilities. The response DTO is your contract with consumers, it could maintain its documentation and so on. The domain model is your internal thing and shouldn't be exposed to be able to evolve if required.

And the incoming request DTO is a blueprint for the creation or modification. You shouldn't require it to have id at all.

Upvotes: 2

Related Questions