Hi, What exactly DYM by "The criteria nodes would be expected to implement an SQM extension accepting a visitor"?
My first thought would have been a combination of the two approaches: Let the criteria objects expose all the required data, make them traversable by means of a visitor and have an SQM-specific visitor implementation which converts each criteria object into its SQM counter-part. --Gunnar 2015-10-30 12:41 GMT+01:00 Steve Ebersole <st...@hibernate.org>: > I started work on SQM-24 which covers translation of criteria queries into > SQM. > > The difficulty with this is that the JPA contracts alone do not give enough > information to really be able to understand the semantics of the query; > there is just not enough information exposed. I can get into specific > examples if that helps, but for now lets take that as a given... > > So then how do we go about translating a criteria into an SQM? There are > going to be 2 main approaches. Each requires some level of extension to > the standard contracts: > > The first approach is to use visitation. The criteria nodes would be > expected to implement an SQM extension accepting a visitor and do the right > thing. The gains here are the normal gains with the visitor pattern. The > downside is that this makes SQM highly dependent on the criteria impl doing > the right thing and makes the criteria impl sensitive to SQM (depending n > how we expose the visitation methods to a degree). > > The second approach would be to extended the standard criteria contracts to > more fully cover the semantic. As one example, JPA defines just Predicate > (for the most part) without exposing the type of predicate. Is it a LIKE > expression? A BETWEEN? A Comparison (=, !=, <, etc)? We just don't know > from the standard contracts. So we'd have to develop a full semantic > extension model here. `interface LikePredicate extends Predicate`, > `BetweenPredicate extends Predicate`, etc. > > I lean towards the visitor approach given these choices. Anyone else have > opinions? Other options? > _______________________________________________ > 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