Excellent; I've filed https://hibernate.atlassian.net/browse/HHH-12287 for this. I'll try and find some time to provide a PR.
What's the cut-off date for 5.3? 2018-02-10 16:17 GMT+01:00 Steve Ebersole <st...@hibernate.org>: > Yes, I agree. > > On Sat, Feb 10, 2018, 7:55 AM Gunnar Morling <gun...@hibernate.org> wrote: > >> 2018-02-09 16:26 GMT+01:00 Steve Ebersole <st...@hibernate.org>: >> >>> I think constraints should be exported to the DDL when the mode is DDL >>> or `hibernate.validator.apply_to_ddl == true`. I'd personally say that >>> `hibernate.validator.apply_to_ddl` still works with NONE - as y'all >>> keep saying, mode is about in-memory callbacks. In fact because of that, >>> we should even consider: >>> >>> 1. droping DDL as an allowable mode >>> 2. no longer allowing multiple values >>> >>> Sounds great. Exactly what I had in mind :) >> >> >>> Additionally I'd say that AUTO maps to CALLBACK *as long as BV is >>> available on the classpath. As I understand it, using CALLBACK mode is >>> supposed to cause an error when BV is not available on classpath. AUTO >>> would silently ignore that. >>> >> >> Exactly. That's why I recommend users to go with CALLBACK over AUTO. >> >> WDYT? >>> >> >> Seems we're on the same page. I can do this change, my only question >> would be about dropping the DDL enum member and rejecting multiple values >> (your 1. and 2. above). Should we first (i.e. in 5.3) deprecate the enum >> member and log a warning if multiple values are given? >> >> >>> >>> On Fri, Feb 9, 2018 at 9:14 AM Gunnar Morling <gun...@hibernate.org> >>> wrote: >>> >>>> Ok, so the constraints would be added to DDL when "hibernate >>>> .validator.apply_to_ddl" is true and validation mode is one of {AUTO, >>>> CALLBACK, DDL}. And they wouldn't be added to the DDL if "hibernate >>>> .validator.apply_to_ddl" is false or validation mode is NONE? >>>> >>>> That'd work for me. >>>> >>>> 2018-02-07 21:07 GMT+01:00 Steve Ebersole <st...@hibernate.org>: >>>> >>>>> No, I think you are right and `hibernate.validator.apply_to_ddl` >>>>> should apply to CALLBACK as well. >>>>> >>>>> On Wed, Feb 7, 2018 at 1:45 PM Gunnar Morling <gun...@hibernate.org> >>>>> wrote: >>>>> >>>>>> > How is a String "CALLBACK,DDL" considered "multiple values" to an >>>>>> XSD? >>>>>> >>>>>> I was referring to the dedicated <validation-mode> element, which is >>>>>> restricted to the values AUTO, CALLBACK, NONE in that XSD and which >>>>>> can be given at most once [1]. I can see though how it'd work with the >>>>>> javax.persistence.validation.mode String property. >>>>>> >>>>>> So, yeah, technically no change needed. Still quite subtle and very >>>>>> easy to miss. Waiting a bit for some more feedback by others, if we >>>>>> decide >>>>>> to leave it as is, we need at least to update the HV docs to describe >>>>>> this >>>>>> in more depth (we only mention <validation-mode> but not that string >>>>>> property). >>>>>> >>>>>> [1] https://github.com/hibernate/hibernate-orm/blob/ >>>>>> master/tooling/metamodel-generator/src/main/xsd/ >>>>>> persistence_2_1.xsd#L326-L339. >>>>>> >>>>>> 2018-02-07 20:05 GMT+01:00 Steve Ebersole <st...@hibernate.org>: >>>>>> >>>>>>> How is a String "CALLBACK,DDL" considered "multiple values" to an >>>>>>> XSD? >>>>>>> >>>>>>> Look, I don't mind revisiting a change here. I really have no horse >>>>>>> n this race - this is not even my code originally. TBH I thought this >>>>>>> was >>>>>>> code that you did. So I don't mind changes here if there is a >>>>>>> consensus. >>>>>>> But let's use real reasons ;) >>>>>>> >>>>>>> On Wed, Feb 7, 2018 at 12:53 PM Gunnar Morling <gun...@hibernate.org> >>>>>>> wrote: >>>>>>> >>>>>>>> Right, giving multiple values isn't allowed as per JPA's XSD. >>>>>>>> >>>>>>>> 2018-02-07 19:44 GMT+01:00 Steve Ebersole <st...@hibernate.org>: >>>>>>>> >>>>>>>>> Of course you can. `mode = CALLBACK,DDL` >>>>>>>>> >>>>>>>>> You mean that you cannot using single-valued setting >>>>>>>>> >>>>>>>>> On Wed, Feb 7, 2018 at 12:02 PM Gunnar Morling < >>>>>>>>> gun...@hibernate.org> wrote: >>>>>>>>> >>>>>>>>>> 2018-02-07 16:08 GMT+01:00 Steve Ebersole <st...@hibernate.org>: >>>>>>>>>> >>>>>>>>>>> Ok, so this is the crux then because it really comes down to >>>>>>>>>>> whether you >>>>>>>>>>> believe whether it is valid to *only* export the annotation-based >>>>>>>>>>> validations as DDL. >>>>>>>>>>> >>>>>>>>>>> And keep in mind that this code is basically unchanged from all >>>>>>>>>>> the way >>>>>>>>>>> back to the initial "integrations" with HV. So back then the >>>>>>>>>>> thought-process (not mine, btw) was that yes, that *is* valid - >>>>>>>>>>> hence the >>>>>>>>>>> option to chose just DDL as an option. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> You'd still have that ability with my suggestion, just keep >>>>>>>>>> validation mode to NONE and set hibernate.validator.apply_to_ddl >>>>>>>>>> = true. >>>>>>>>>> >>>>>>>>>> By "safest mode" above I meant CALLBACK is the right way if you >>>>>>>>>> really want to make sure that lifecycle validation occurs, or you'll >>>>>>>>>> get an >>>>>>>>>> exception if no BV provider is present. It can't happen that >>>>>>>>>> lifecycle >>>>>>>>>> validation silently, unexpectedly doesn't happen. Hence I prefer it >>>>>>>>>> over >>>>>>>>>> AUTO. And as things stand I can't benefit from constraints in DDL >>>>>>>>>> export in >>>>>>>>>> that case, which is a pity. >>>>>>>>>> >>>>>>>>>> But if thats now no longer valid then that changes things. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Tue, Feb 6, 2018 at 3:15 PM Guillaume Smet < >>>>>>>>>>> guillaume.s...@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> > Hi, >>>>>>>>>>> > >>>>>>>>>>> > On Tue, Feb 6, 2018 at 5:01 PM, Steve Ebersole < >>>>>>>>>>> st...@hibernate.org> >>>>>>>>>>> > wrote: >>>>>>>>>>> >> >>>>>>>>>>> >> Is it valid for a user to want *just* DDL-based validation? >>>>>>>>>>> How would >>>>>>>>>>> >> that >>>>>>>>>>> >> work in Gunnar's request? >>>>>>>>>>> >> >>>>>>>>>>> > >>>>>>>>>>> > From your writings, I suspect I'm the only one with this >>>>>>>>>>> opinion but my >>>>>>>>>>> > answer would be: "not if you use Bean Validation annotations". >>>>>>>>>>> > >>>>>>>>>>> > If you use BV's @NotNull, you expect BV to validate the input. >>>>>>>>>>> And you >>>>>>>>>>> > might want additional DDL in your database to be on the safe >>>>>>>>>>> side (which >>>>>>>>>>> > should be the default IMHO). >>>>>>>>>>> > >>>>>>>>>>> > -- >>>>>>>>>>> > Guillaume >>>>>>>>>>> > >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> hibernate-dev mailing list >>>>>>>>>>> hibernate-dev@lists.jboss.org >>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>> >>>> _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev