[hibernate-dev] Pull request for HHH-2394 (Support filter tag in subclass)

Rob Worsnop rworsnop at gmail.com
Thu Jun 28 14:04:42 EDT 2012


OK, done. I think I covered everything.

Assuming my changes are OK, will they be in 4.2?

On Mon, Jun 25, 2012 at 11:48 PM, Rob Worsnop <rworsnop at gmail.com> wrote:

> Oh good. The way I am coding it, the flag will be ignored
> if SqlFragmentAlias elements are present.
>
>
> On Mon, Jun 25, 2012 at 3:40 PM, Steve Ebersole <steve at hibernate.org>wrote:
>
>> And by the way, I think you are right in that if there are any explicit
>> SqlFragmentAlias bits supplied, that we infer 'deduceAliasInjectionPoints'
>> as being false.
>>
>>
>> On 06/25/2012 08:29 AM, Rob Worsnop wrote:
>>
>>> Got it. Earlier you were looking for suggestions for a less verbose name
>>> for this. How about "autoAliasInjection"?
>>>
>>> On Mon, Jun 25, 2012 at 8:20 AM, Steve Ebersole <steve at hibernate.org
>>> <mailto:steve at hibernate.org>> wrote:
>>>
>>>    'deduceAliasInjectionPoints' is important when you don't have
>>>    injections.  Otherwise Hibernate ends up scanning the condition
>>>    fragment for no reason.
>>>
>>>
>>>    On Fri 22 Jun 2012 11:09:31 AM CDT, Rob Worsnop wrote:
>>>
>>>        On Mon, Jun 4, 2012 at 12:14 PM, Steve Ebersole
>>>        <steve at hibernate.org <mailto:steve at hibernate.org>> wrote:
>>>
>>>            1) I think adding support for {alias} is a more general
>>>            issue.  Its
>>>            applicable to many other pieces of mapping metadata
>>>            (@Formula, etc).  More I
>>>            was responding to David's comment there.  I totally think it
>>>            makes sense to
>>>            support this in all of those cases.  I guess the vote point
>>>            there is whether
>>>            we want to introduce that support piecemeal or develop it
>>>            across the board.
>>>              If we do do it piecemeal I think another piece of
>>>            information we will need
>>>            is a flag indicating whether to scan for alias injection
>>>            points.  By
>>>            "scanning" I mean the processing we do today where we
>>>            tokenize the fragment
>>>            string and then try to guess where an alias is needed.
>>>            Let's call this
>>>            flag 'deduceAliasInjectionPoints' for now.  I tend to favor
>>>            meaningful
>>>            attribute names so my suggested names tend to get a little
>>>            long; I am open
>>>            to suggestions for a more succinct name.  Anyway, I think it
>>>            needs to be
>>>            TRUE by default to maintain backwards compatible behavior.
>>>              Here is an
>>>            example:
>>>
>>>            @Filter(name="iqMin", table="ZOOLOGY_HUMAN",
>>>            condition="{alias}.HUMAN_IQ >=
>>>            :min", deduceAliasInjectionPoints=__**false)
>>>
>>>
>>>            Here there is no need to deduce the points at which to
>>>            inject an alias; we
>>>            have done that for Hibernate in the supplied condition
>>> fragment.
>>>
>>>            I think another discussion revolves around cases in which
>>>            the fragment
>>>            involves references to columns from multiple tables.  Mostly
>>>            this is
>>>            important for scenarios involving secondary tables and
>>>            inheritance.  Do we
>>>            want to provide support for that?  Using the classic
>>>            org.hibernate.test.hql.Animal hierarchy from the testsuite,
>>>            maybe something
>>>            like:
>>>
>>>            @Filter(
>>>               name="iqMin",
>>>               condition="{a}.bodyWeight >= :minWeight and {m}.birthdate <
>>>            :ageCutOffBirthDate",
>>>               deduceAliasInjectionPoints=__**false,
>>>
>>>               aliases={
>>>                   @SqlFragmentAlias( alias="a", entity=Animal.class ),
>>>                   @SqlFragmentAlias( alias="m", entity=Mammal.class )
>>>               }
>>>            )
>>>
>>>
>>>        How about just applying the secondary table usage to everything?
>>>
>>>        So, to rewrite your first example:
>>>
>>>        @Filter(name="iqMin", condition="{h}.HUMAN_IQ >=> :min",
>>>             aliases={@SqlFragmentAlias( alias="h",
>>>        table="ZOOLOGY_HUMAN" )})
>>>
>>>        Note that I didn't include "deduceAliasInjectionPoints". Wouldn't
>>> we
>>>        just infer that from the presence of the aliases element?
>>>
>>>
>>>    --
>>>    steve at hibernate.org <mailto:steve at hibernate.org>
>>>    http://hibernate.org
>>>
>>>
>>>
>> --
>> steve at hibernate.org
>> http://hibernate.org
>>
>>
>>
>


More information about the hibernate-dev mailing list