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 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. WDYT? 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