Sorry about String immutable, let my explain me.

 (The entities is just an example for demostrate this)

@Entity
private MyClass implements Serializable{

private String name="old value";
@ManyToOne
private List<Product> products;
// getters and setters..
}

Example 1
1. Get MyClass entity in a managedbean from and ejb (ejb use a query and
the products attribute is null because is LAZY LOADING).
2. inside of the managedbean try to set a new value for name
myClass.setName("new value); //the value is refreshed from "old value" to
the new value "new value"
3. inside of the managedbean try to set a new list of products like:
    List<Product> myNewList = new ArrayList<Product>(new Product());
    //then try to set this new list to the entity, remeber that we are in
the managedbean and the entity is detached
    myClass.setProducts(myNewList); // here i set the new list but no
matter what list of product i set to my entity the list of product remains
null, like if the list is like readonly
    myClass.getProducts().size();//i get a nullpointer here

Example 2
1. Get MyClass entity in a managedbean from and ejb (ejb use a query and
the products attribute contains N elements (IS NOT EMPTY OR NULL) because
is EAGER LOADING).
2. inside of the managedbean try to set a new value for name
myClass.setName("new value);  //the value is refreshed from "old value" to
the new value "new value"
3. inside of the managedbean try to clear the list of the entity you get an
exception
    myClass.getProducts().clear(); // here i get an exception "Result lists
are read only"


I cannot find anywhere in the specification like "results lists have to be
readonly and other values not".

This is why i asked "the list values have to be immutables in an entity
even when the entity is detached?"


Then i ask again, why list are read only and any other value not?




2013/10/22 Albert Lee <allee8...@gmail.com>

> String type is immutable, meaning if you are holding on a reference to it,
> it will never be changed even it is "modified" since a new object/reference
> will be created.
>
> List type is not immutable, regardless of if it is used in an JPA Entity,
> either managed or detached.
>
> Not sure exactly what you are looking for but an example may be helpful
> here.
>
>
>
> On Tue, Oct 22, 2013 at 9:27 AM, José Luis Cetina <maxtorz...@gmail.com
> >wrote:
>
> > Hi, i want to know if the default openjpa behavior about list attributes
> in
> > an entity
> >
> > When i retrieve and entity (that has list values) and detached it from em
> > and then return (from ejb) to my web tier (jsf app), the list values are
> > immutable but other object are mutables like strings, I cannot find in
> the
> > specification if this is the expected behavior, the list values have to
> be
> > immutables in an entity even when the entity is detached?
> >
> > Thanks
> >
>
>
>
> --
> Albert Lee.
>



-- 
-------------------------------------------------------------------
*SCJA. José Luis Cetina*
-------------------------------------------------------------------

Reply via email to