Ron -

Take a look at the user manual[1] as I believe this is a known behavior
change between the releases.

[1]
http://ci.apache.org/projects/openjpa/trunk/docbook/manual.html#jpa_2.2_cascadePersist

Thanks,
Rick


On Tue, Nov 19, 2013 at 11:37 PM, Ron Grabowski <rongrabow...@yahoo.com>wrote:

> Now that I think about it some more, 2.0.1 seemed to persist the keys of
> the child entity into the parent row. It seems like 2.0.1 didn't check if
> the child entity was attached or not...it just say an entity with keys so
> it persisted it. Now in 2.2.2 it seems like the child entity must be
> attached or else an error is thrown.
>
>
>
> On Wednesday, November 20, 2013 12:18 AM, Ron Grabowski <
> rongrabow...@yahoo.com> wrote:
>
> Let's suppose every Product has a ProductCategory. Product categories very
> rarely change so I load those objects at startup from the database with
> JPA, detach them from their entity manager, cache them outside of JPA, then
> occasional re-use them in a read-only capacity on other entities. Older
> versions of OpenJPA seemed to simply skip over those detached entities
> while persisting the parent...in this example Product.ProductCategory would
> get skipped. Something changed (in WebSphere 7 to 8.5.5 if anyone cares
> about specifics) such that I now receive this error message:
>
> <openjpa-2.2.2-r422266:1468616 fatal user error>
> org.apache.openjpa.persistence.InvalidStateException: Encountered unmanaged
> object "com.example.ProductCategory@166184d" in life cycle state
>  unmanaged while cascading persistence via field
> "com.example.Product.productCategory" during flush.  However, this field
> does not allow cascade persist. You cannot flush unmanaged objects or
> graphs that have persistent associations to unmanaged objects.
>  Suggested actions: a) Set the cascade attribute for this field to
> CascadeType.PERSIST or CascadeType.ALL (JPA annotations) or "persist" or
> "all" (JPA orm.xml),
>  b) enable cascade-persist globally,
>  c) manually persist the related field value prior to flushing.
>  d) if the reference belongs to another context, allow reference to it by
> setting StoreContext.setAllowReferenceToSiblingContext().
> FailedObject: com.example.ProductCategory@166184d
>
> I don't want to persist the detached child field, nothing will ever change
> on it, and it doesn't belong to any entity manager scope. I want to ignore
> it when the main object is persisted.
>
> Why isn't there a CascadeType.IGNORE that I could place on
> Product.ProductCategory to have OpenJPA revert to the old behavior of
> skipping over the detached entity?
>
> Any ideas?
>



-- 
*Rick Curtis*

Reply via email to