[
https://issues.apache.org/jira/browse/OPENJPA-2039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13085274#comment-13085274
]
Pinaki Poddar commented on OPENJPA-2039:
----------------------------------------
I have not tracked the details of this issue. But simply looking at the commit,
I have few concerns.
1. The new boolean flag introduced IgnoreFKSelect is not in the *right* place.
The *right* (by existing
design discipline) of any such configuration is *not* JDBCStoreManager, but
JDBCFetchPlan/FetchConfiguration.
I know it is a bit of extra work to carry that getter/setter, copying the state
in FetchConfiguration.copy(),
but I still request the committer to take that extra work to introduce this new
option.
2. A bit of JavaDoc comment will be helpful.
3. A doc update is necessary.
> FKs for EAGER fields that are not in the current fetchplan aren't selected
> --------------------------------------------------------------------------
>
> Key: OPENJPA-2039
> URL: https://issues.apache.org/jira/browse/OPENJPA-2039
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 2.1.1, 2.2.0
> Reporter: Rick Curtis
> Assignee: Rick Curtis
> Fix For: 2.2.0
>
> Attachments: OPENJPA-2039.failingtest.patch, OPENJPA-2039.patch
>
>
> I am testing a scenario where I have an Entity with a number of eager/lazy
> relationships and at runtime, using a FetchPlan, I want to mark all
> relationships as lazy. I was able to hack around a bug reported previously on
> this list about not being able to remove fields from a fetch plan by creating
> a new fetch plan, removing the default fetch group, and re-adding all fields
> you want back into the new fetch plan. This all seems to work.
> I found that owned *toOne relationships that are marked as lazy via
> annotations we will select the foreign keys. If the relationships were marked
> as eager, we don't select the foreign keys. This is where I believe the bug
> is. In JDBCStoreManager.optSelect(...) we have a bit of code that looks to
> see if a field is a not a part of the default fetch group, and if it was not
> removed explicitly. This is wrong because for the sake of the load that is in
> progress, I'm not using the default fetch group.
> With this JIRA I'd like to remove the two conditionals
> '!fm.isInDefaultFetchGroup() && !fm.isDefaultFetchGroupExplicit()' so that we
> will load the fks for lazy and eager marked fields.
> This seems safe enough to do as worst case, we will select an extra field
> from a table that we are already selecting from. Best case, when accessing a
> lazy collection, we will issue a select by FK rather than a select with a
> join.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira