I guess the spec is a bit clearer on this than I first thought.  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?

Kevin

On 7/6/07, Craig L Russell <[EMAIL PROTECTED]> wrote:


On Jul 6, 2007, at 10:52 AM, Patrick Linskey wrote:

> The spec doesn't seem to discuss it, but I think that lazy is a pretty
> good default behavior for @Lob field types -- typically @Lob things
> are big, so you often don't want them in the default fetch graph.

Enum is different, though. Enum should be eager fetching by default.

Lazy fetching is optional, so we can decide what we want to do. It
seems that the existence of @Basic should not change our strategy.
And we should default to lazy fetching for Lob and eager fetching for
Enum.

Craig
>
> -Patrick
>
> On 7/6/07, Kevin Sutter <[EMAIL PROTECTED]> wrote:
>> 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 in:
>>
>>     private Gender gender;
>>
>> Thanks,
>> Kevin
>>
>
>
> --
> Patrick Linskey
> 202 669 5907

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
P.S. A good JDO? O, Gasp!



Reply via email to