openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Sutter (JIRA)" <>
Subject [jira] Resolved: (OPENJPA-281) EAGER not the default fetch type without the @Basic annotation
Date Sun, 05 Aug 2007 23:51:29 GMT


Kevin Sutter resolved OPENJPA-281.

    Resolution: Fixed

Resolved via revision 562986.

> EAGER not the default fetch type without the @Basic annotation
> --------------------------------------------------------------
>                 Key: OPENJPA-281
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 0.9.7
>            Reporter: Kevin Sutter
>            Assignee: Kevin Sutter
>             Fix For: 1.0.0
>         Attachments: openjpa-281.patch
> There's an on-going discussion on the dev mailing list concerning this problem (
 Since I've gotten agreement on at least one aspect of the problem, I decided to open this
JIRA Issue to document the problem.
> Here's a summary of the problem:
> I am finding that the supposed default action of Eager fetching is not happening with
@Enumerated and @Lob fields.  If I explicitly specify the @Basic annotation, then the fields
are eagerly fetched.  But, without this extraneous @Basic, these fields are lazily loaded.
 This action does not seem to be consistent with the spec.  Nor, can I find any mention of
this alternate behavior in our OpenJPA manual.  Sounds like a bug to me.  Any other insights?
> This works (eager loading kicks in):
>     @Basic @Enumerated(EnumType.STRING)
>     private Gender gender;
> This does not work (lazy loading kicks in):
>     @Enumerated(EnumType.STRING)
>     private Gender gender;
> I have also tried to use defaults (without any annotations), and lazy loading still kicks
>     private Gender gender;
> The JPA spec attempts to address this situation in section 9.1.18...  Section 9.1.8 of
the JPA spec indicates that @Basic is optional and applies to the following types: 
> "..Java primitive types, wrappers of the primitive types, java.lang.String, java.math.BigInteger,
> java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date,
> java.sql.Time, java.sql.Timestamp, byte[], Byte[], char[], Character[],
> enums, and any other type that implements Serializable."
> And, since the default fetch type for @Basic is EAGER, it looks like we need to do eager
fetching for both @Enumerated and @Lob fields unless otherwise overridden by a LAZY fetch
type (ie. @Basic(fetch=LAZY)).  Agree?
> We're still working on the agreement...  :-)
> Thanks,
> Kevin

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message