openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: Does OpenJPA replace Collections?
Date Wed, 08 Apr 2009 09:18:29 GMT

On Apr 7, 2009, at 11:10 PM, Paul Copeland wrote:

> Can OpenJPA replace a Collection when it is loaded?
> With the code below when the list is initially empty you need to  
> create a List (ArrayList) so you can add elements to it. When I  
> persisted new objects on the ManyToOne side and added them to the  
> List that worked.  But the first time the List was loaded it seemed  
> to replace my ArrayList with the newly loaded data and made an older  
> reference to the ArrayList stale (no longer updated when more  
> elements were added to myPcList).  This was all in one transaction.
> So now I wonder if the initial null List is a special case or if  
> OpenJPA might replace the Collection anytime it decides to load it  
> again.  Anyone know the answer?

If the list is persistent and the class is enhanced, the collection  
will always reflect what's in the database.
> If I don't create an initial ArrayList how can I add elements when  
> the List is empty?

I'd recommend always having a non-empty list. Initialize it in the  
constructor to an empty list and don't check it after that.

Here's what it would look like:
>  @OneToMany (mappedBy="ownerSide", fetch=FetchType.LAZY,  
> cascade=CascadeType.PERSIST)
>  private List<MyPcObject> myPcList = new ArrayList<MyPcObject>();
>  List<Promotion> getMyPcList()
>  {
>      return myPcList;
>  }

Craig L Russell
Architect, Sun Java Enterprise System
408 276-5638
P.S. A good JDO? O, Gasp!

View raw message