See below...
On Fri, Dec 16, 2016 at 5:03 PM, Steve Ebersole <steve(a)hibernate.org> wrote:
It likely is not an issue. Query spaces only come into play with
regards to
restrictions. Since the EntityGraph is not part of the query proper
restrictions cannot be based on it.
That would be a scenario to try though... create a query restricting results
based on some joined attribute and then supply an EntityGraph hint for that
attribute. But IMO that is a completely contrived scenario.
I've confirmed that adding the restriction on an attribute to the
Query will add that joined entity as an affected query space, with or
without an EntityGraph. Any changes affecting the joined query space
would force a flush before executing the query.
For example, changing the query in the PR to something like:
query = entityManager.createQuery( "from Company.class where
location.address = '123 somewhereelse'");
query.setHint( QueryHints.HINT_LOADGRAPH, entityGraph );
The change to location#address that is already in the Session would
result in flushing the session before executing the query.
Is this the sort of test that you are suggesting? If not, please give
me an example.
On Fri, Dec 16, 2016, 6:09 PM Gail Badner <gbadner(a)redhat.com> wrote:
>
> Query spaces for EntityGraph nodes/subgraphs are not currently added
> when applied to a Query, and so the session is not flushed if it
> contains updated data relevant to the EntityGraph that is not in the
> query spaces defined for the Query.
>
> I originally though this was a critical issue, but now that I'm
> looking into it, I'm not so sure. I am having a hard time coming up
> with a test case where it matters.
>
> I've created a pull request with the test case attached to HHH-11213,
> with some added checks to detect if the session flushes. [1]
>
> In this case, the session does not flush, but the query results are
> still correct because the updated entity is taken from the Session,
> not from the ResultSet returned by the query.
>
> I wonder now if it really is necessary to flush the Session when the
> session has updates that apply *only* to the EntityGraph (and not to
> the base Query).
>
> Thoughts?
>
> Thanks,
> Gail
>
>
> [1]
https://github.com/hibernate/hibernate-orm/pull/1707
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hibernate-dev