On Fri 2013-08-30 6:27, Steve Ebersole wrote: > > On Fri 30 Aug 2013 06:05:37 AM CDT, Emmanuel Bernard wrote: > >> > >> > >>2) The 'declaringClassName' passed in to SimpleValueBinder#setType > >>is Sub. So maybe we can leverage that. But > >>org.hibernate.cfg.annotations.PropertyBinder#makePropertyAndValue > >>(the main caller of this method) has explicit handle for null-ness > >>so that makes me nervous. > >> > >>Given the differing rules for resolving converter to use for basic > >>types, collections and composites and the fact that these > >>distinctions are already handled in the PropertyHolder hierarchy, I > >>think it would be better to handle those distinctions there. Either > >>adding a separate method to inject the converter to use (making sure > >>it is called before setType, ugh) or changing the signature of > >>setType to accept the converter to use. > >>PropertyBinder#makePropertyAndValue would then use > >>PropertyHolder#resolveAttributeConverter to pass what it needs to > >>pass. > >> > >>WDYT? > > > > > >Yes that makes sense to consolidate this logic in PropertyHolder. But I > >have to admit I failed to find an elegant algorithm and data structure > >to resolve the convert use cases you have described. All involved some > >back reading of annotations etc :( > > Depends what you mean "back-reading". I planned on sifting through > the annotations as "resolve" is called. > > > > >BTW is it possible to have the illegal case by mean of mixing XML and > >annotation. ie you have the @Convert on the property and the disable > >facility at the class level in XML. Does the same rule apply? > >Because for sure the XML and the annotation are treated equally by > >commons annotation. > <quote> > The convert subelement is additive to any Convert or Converts > annotations on the entity. It > overrides any Convert annotation for the same attribute name. If a > convert subelement is present, > and attributes or subelements of that convert subelement are not > explicitly specified, their default > values are applied > </quote> > > My reading of that on your use-case is that we really should apply > the XML-defined converter. But hiberate-commons-annotations simply > does not give us the information needed to be able to do that > properly.
You can do that, you would code the logic in JPAOverriddenAnnotationReader in ORM Core. Check getAttributeOverrides / mergeAttributeOverrides as an example of how to read Java annotation, the XML "annotations" and merge the two as you please. _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev