[hibernate-dev] implement criteria query collection-of-component and collection-of-value against latest 3.5.0-Beta-3
David Mansfield
hibernate at dm.cobite.com
Thu Jan 21 13:02:07 EST 2010
Well my patches got stripped... Any ideas?
On Thu, 2010-01-21 at 12:39 -0500, David Mansfield wrote:
> Hi All,
>
> Attached is a series of patches which implements the missing
> functionality for Criteria queries, namely being able to use Criteria
> queries for collections of components or scalars.
>
> The patch series includes documentation changes and test cases.
>
> I'd love for this to get into the project, and would appreciate any
> feedback or questions and will work to resolve any issues.
>
> The first two patches are necessary groundwork and bugfixes for the real
> code.
>
> This code (against 3.3.1 and previous) has been in production for a long
> time here and has no known issues.
>
> Here's some info about the patches as a series:
>
> Patch 0001: In the JoinWalker, we assemble an SQL select list fragment
> from a list of Joinables. Reading the existing code, we see it's
> possible for the fragment generated to be empty. However if the LAST
> joinable generates an empty fragment, we put a spurious comma into the
> fragment. Fix this by only prepending a comma when necessary.
>
> Patch 0002: In the CriteriaQueryTranslator, we process the path given by
> a SubCriteria object looking for the entity name for the property. If
> the SubCriteria was mistakenly created on a component type, we will exit
> the loop using the owning entity, and will eventually end up failing
> (throwing an exception) trying to lookup up the restricted property
> against the entity, instead of against the component. Fix this by
> throwing a more informative exception, and modify the documentation to
> be explicit about how to do this properly.
>
> Patch 0003: Implement the enhancement named. This includes the
> documentation changes. The general approach is:
> - create an interface called the CriteriaInfoProvider which abstracts
> the operations that are different for the different types of Criteria
> targets.
> - change the getPathEntityName method to be a factory method for
> creating the proper implementation of the interface
> - change the rest of CriteriaQueryTranslator to use the interface
> instead of using the previous entity-only implementation
> - implementations of the interface exist for
> Entity: this implements the same code as currently exists
> ComponentCollection: for collection-of-component
> ScalarCollection: for collection-of-value
> Component: for components
> - update the logic in CriteriaJoinWalker which has to be very careful
> about how it works since the walker walks certain property paths twice.
>
> Patch 0004: the test case for collection-of-value
>
> Patch 0005: the test case for collection-of-component
>
> Thanks,
> David Mansfield
> Cobite INC.
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
More information about the hibernate-dev
mailing list