See inline... On Fri 22 Feb 2013 02:38:32 PM CST, Hardy Ferentschik wrote: > > On 22 Jan 2013, at 9:17 PM, Steve Ebersole <st...@hibernate.org> wrote: > >> Kind of. What I mean is that the HEM integration code is allowing Set >> <ValidationMode>. So our impl allows a value like "auto, ddl" or other >> combos. I am not able to grok why we allow multiples. > > I think this is a Hibernate specific "feature" to support also ddl > generation. The idea is to say something like "callback,ddl" to enable > validation and application of DDL constraints. > Emmanuel might know more. With JPA 2.1 and the DDL stuff part of the spec I > would assume there are are other explicit options to enable/disable these > features.
Ok, for some reason I thought DDL-based validation was a JPA option as well. But you are correct, it isnt. However, I still do not see the benefit of allowing multiple selections simultaneously. is it really such a great idea to allow callback *and* ddl in combination? We already throw exceptions on other combinations. Also, JPA 2.1 says nothing about DDL-based validation. >> Also auto and callback are slightly different. callback causes an error if >> no bv provider is available whereas auto then skips validation. > > Hmm, seems wrong indeed, but maybe that's the difference in the end. Looking > at "3.6.1.1 Enabling Automatic Validation" of the spec for the auto mode it > is not explicitly mentioned > that an exception should be thrown whereas for callback it is. Whether this > is international or just badly written I don't know. Maybe something to > clarify in the spec. > Don't we have someone in the JPA expert group ;-) Quoting part of 3.6.1.1: <quote> If the auto validation mode is specified by the validation-mode element or the javax.persis- tence.validation.mode property, or if neither the validation-mode element nor the javax.persistence.validation.mode property is specified, and a Bean Validation provider is present in the environment, the persistence provider must perform the automatic validation of entities as described in section 3.6.1.2. If no Bean Validation provider is present in the environment, no lifecy- cle event validation takes place. </quote> The first part of that first sentence is an overly complex grammatic structure (imo) which is maybe why you missed it. But essentially the sentence says that in AUTO validation mode (either explicit or implicit due to no explicit value): a) if "a Bean Validation provider is present in the environment, the persistence provider must perform the automatic validation of entities as described in section 3.6.1.2" b) If no Bean Validation provider is present in the environment, no lifecy- cle event validation takes place. Again that is the auto case. And then: <quote> If the callback validation mode is specified by the validation-mode element or the javax.per- sistence.validation.mode property, the persistence provider must perform the lifecycle event validation as described in section 3.6.1.2. It is an error if there is no Bean Validation provider present in the environment, and the provider must throw the PersistenceException if the javax.per- sistence.validation.mode property value "callback" has been passed to the Persis- tence.createEntityManagerFactory method </quote> So the only difference between CALLBACK and AUTO is in how they handle Bean Validation provider "being not present". _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev