IMHO, it should be OK to use the List interface as long as it points to a
class that implements Serializable. i.e. List<String> property =
ArrayList<String>(); should work. Why should the interface have to be
serializable? I don't like the idea of having to hard code it to a concrete
type.
Jon
----- Original Message -----
From: "Sanjeeb Kumar Sahoo" <Sanjeeb.Sahoo_at_Sun.COM>
To: <persistence_at_glassfish.dev.java.net>
Sent: Thursday, March 01, 2007 7:11 PM
Subject: Re: field of type List<String>
> Jeff,
>
> I am trying to understand what change actually worked and what is the
> *real* bug vs. work around:
> 0. List<String> failed with message "String is not an entity": This is a
> bug in TopLink Essential. It should say List<String> is not Serializable.
> 1. "@Basic List<String> ..." failed with SQLException: This is a bug in
> TopLink Essential for the same reason as earlier.
>
> 2. "@Basic ArrayList<String> ..." worked.
>
> 3. Have you tried "ArrayList<String> ..." (i.e. without @Basic)? This
> should work as @Basic is optional for a Serializable field type. If it
> does not work, then there is another bug in TopLink Essential.
>
> Since it is a requirement of the JPA spec that you use a Serializable type
> with @Basic, I won't consider changing from List<String> to
> ArrayList<String> to be a work around; that is a permanent change in your
> code.
>
> Thanks,
> Sahoo
>
> jeff wrote:
>> no guy, i missed that. changing to a concrete type works around it for
>> now, as sahoo suggested.
>>
>> thank you again.
>>
>> */Guy Pelletier <guy.pelletier_at_oracle.com>/* wrote:
>>
>> Jeff,
>> Did you make the change from List to ArrayList (or some other list
>> implementation) like Sahoo mentioned?
>> Cheers,
>> Guy
>>
>> ----- Original Message -----
>> *From:* jeff <mailto:jeffrey.blattman_at_yahoo.com>
>> *To:* persistence_at_glassfish.dev.java.net
>> <mailto:persistence_at_glassfish.dev.java.net>
>> *Sent:* Thursday, March 01, 2007 2:46 PM
>> *Subject:* Re: field of type List<String>
>>
>> thank you guy,
>>
>> can you give more information on how i should be using this?
>> just applying @Basic with no parameters results in a different
>> exception ...
>>
>> adding the @Basic annotation to the getter and setter resulted
>> in a different exception:
>> Internal Exception: java.sql.SQLException: Type is not
>> supported.Error Code: 20000
>> Call:INSERT INTO PAGE (ID, PORTLETENTITYIDS, LAYOUT) VALUES
>> (?, ?, ?)
>> bind => [foo, [x, y, z], [B_at_50818a]
>>
>> i couldn't find any examples in the java ee tutorial on using
>> that annotation.
>>
>> ?
>>
>> thanks!
>>
>> */Guy Pelletier <guy.pelletier_at_oracle.com>/* wrote:
>>
>> Jeff,
>>
>> I have re-opened the bug for further investigation. In the
>> mean time, you
>> can explicitly mark the accessor with @Basic to get past
>> this exception.
>>
>> Cheers,
>> Guy
>>
>> ----- Original Message -----
>> From: "Sanjeeb Kumar Sahoo"
>> To:
>> Sent: Wednesday, February 28, 2007 11:44 PM
>> Subject: Re: field of type List
>>
>>
>> > Hi Jeff,
>> >
>> > Your issue is related to issue #1327. It is fixed in the
>> version of
>> > TopLink Essentials you are using. Although that issue is
>> marked as fixed,
>> > I don't think it is entirely fixed. Had it been the
>> case, as reported in
>> > that bug, you should have got a validation error that
>> says something like:
>> > /List is not Serializable/; and if you used LinkedList or
>> > some other List implementation that is serializable,
>> your program should
>> > have worked.
>> >
>> > You can reopen that bug or file a new one.
>> >
>> > Thanks,
>> > Sahoo
>> >
>> > jeff wrote:
>> >> hi sanjeeb, thanks for your response,
>> >>
>> >> i'm using the standalone distribution from glassfish,
>> toplink essentials
>> >> 2.0-36, which was the latest as of a few days ago.
>> >>
>> >> is there an issue submitted for this? should i submit a
>> new one?
>> >> thanks.
>> >>
>> >> */Sanjeeb Kumar Sahoo /* wrote:
>> >>
>> >> This is a bug in the persistence provider that thinks
>> List is a
>> >> collection of entities. I presume you are using
>> GlassFish persistence
>> >> provider. What version are you using?
>> >>
>> >> Thanks,
>> >> Sahoo
>> >> jeff wrote:
>> >> > i have an entity class w/ a field of type List, it
>> looks like
>> >> > this:
>> >> >
>> >> > @XmlElementWrapper (
>> >> > name = "portlet-entity-ids",
>> >> > nillable = false
>> >> > )
>> >> > @XmlElement (
>> >> > name = "portlet-entity-id"
>> >> > )
>> >> > private List portletEntityIds;
>> >> >
>> >> > when i attempt to persist this class, i get an
>> exception ...
>> >> >
>> >> > Exception Description: [class
>> com.sun.portal.pom.Page] uses a
>> >> > non-entity [class java.lang.String] as target entity
>> in the
>> >> > relationship attribute [public java.util.List
>> >> > com.sun.portal.pom.Page.getPortletEntityIds()].
>> >> >
>> >> > i tried declaring java.lang.String in my PU just to
>> see what
>> >> happened,
>> >> > and it did not like that either (said it couldn't
>> find the class
>> >> > actually).
>> >> >
>> >> > am i missing something?
>> >> > thanks!
>> >> >
>> >> >
>> >>
>> ------------------------------------------------------------------------
>> >> > Bored stiff?
>> >> > Loosen up...
>> >> > Download and play hundreds of games for free
>> >> > on Yahoo!
>> >> > Games.
>> >>
>> >>
>> >>
>> ------------------------------------------------------------------------
>> >> Want to start your own business? Learn how on Yahoo!
>> Small Business.
>> >>
>> >
>> >
>>
>>
>> ------------------------------------------------------------------------
>> TV dinner still cooling?
>> Check out "Tonight's Picks"
>> <http://us.rd.yahoo.com/evt=49979/*http://tv.yahoo.com/> on
>> Yahoo! TV.
>>
>>
>> ------------------------------------------------------------------------
>> It's here! Your new message!
>> Get new email alerts
>> <http://us.rd.yahoo.com/evt=49938/*http://tools.search.yahoo.com/toolbar/features/mail/>
>> with the free Yahoo! Toolbar.
>> <http://us.rd.yahoo.com/evt=49938/*http://tools.search.yahoo.com/toolbar/features/mail/>
>