| @Valid is required to initiate validation of constraints on referenced objects. I don't think it'd be good to automatically do it, as it'd mean quite some overhead. E.g. the engine couldn't know that a String property doesn't have any constraints so it'd have to navigate into it. Also for parameterized types it is needed so to know which elements from a container type should be validated (e.g. keys vs. values of a referenced map). |