[ 
https://issues.apache.org/jira/browse/OPENJPA-659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pinaki Poddar resolved OPENJPA-659.
-----------------------------------

    Resolution: Fixed

Revision 676727:

Dirty checking fails for runtime enhanced classes. The original case reported 
the failure in a Spring-Tomcat-Weaver with Embdded field. But as 
TestSimpleUnenhancedQuery can raise the same failure in a simpler settings. The 
fix is related to initializing a SaveFieldManager conditional to having loaded 
fields at invocation of saveFields(). The fix removes the condition and ensures 
that a SaveFieldManager is assocaited even when saveFields() is invoked without 
any field loaded.

> No state snapshot is available on @Embedded class when using runtime 
> enhancement via spring-tomcat-weaver 
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-659
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-659
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.1.0
>         Environment: Tomcat6, Java6, Mac OS X, Spring 2.5
>            Reporter: Marc Logemann
>            Assignee: Pinaki Poddar
>
> i am getting this exception:
> org.springframework.orm.jpa.JpaSystemException: No state snapshot is 
> available for instance of type "de.logentis.bwh.model.Payment", but this 
> instance uses state-comparison for dirty detection.; nested exception is 
> <openjpa-1.1.0-r422266:657916 fatal general error> 
> org.apache.openjpa.persistence.PersistenceException...
> Here are the relevant pieces of the casses:
> @Entity
> @Table(name = "orders")
> @VersionColumn(name = "_version")
> public class Order {
> ...
>    @Embedded
>    Payment payment;
> }
> @Embeddable
> public class Payment {
>    @Basic
>    @Enumerated(EnumType.STRING)
>    @Column(name = "paymenttype")
>    PaymentType type;
>    @Column(name = "currency")
>    String currency;
>    @Column(name = "pricing")
>    String pricing;
>    @Column(name = "cost")
>    int cost;
> }
> The point is, persisting is no problem at all, the exception will be thrown 
> by issueing:
> Query query = getEntityManager().createQuery("select o FROM Order o");
> query.getResultList();

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to