[
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.