I figured it out, thje @Version column on a Timestamp was not properly
processed by the annotation engine.
On Fri, Feb 29, 2008 at 11:13 AM, Ronald R. DiFrango <[EMAIL PROTECTED]>
wrote:
> All,
>
> I am attempting to switch out Hibernate for OpenJPA, but I am getting the
> following exception:
>
>
> java.lang.ClassCastException: java.sql.Date
> at
> com.circuitcity.instantcredit.services.persistance.domain.AccountCarrierTbl.pcReplaceField
> (AccountCarrierTbl.java)
> at org.apache.openjpa.kernel.StateManagerImpl.replaceField(
> StateManagerImpl.java:2990)
> at
> org.apache.openjpa.kernel.DetachManager$DetachFieldManager.detachVersion(
> DetachManager.java:509)
> at org.apache.openjpa.kernel.DetachManager.detachInternal(
> DetachManager.java:441)
> at org.apache.openjpa.kernel.DetachManager.detachAll(
> DetachManager.java:310)
> at org.apache.openjpa.kernel.BrokerImpl.detachAllInternal(
> BrokerImpl.java:3147)
> at org.apache.openjpa.kernel.BrokerImpl.free(BrokerImpl.java:4035)
> at org.apache.openjpa.kernel.BrokerImpl.close(BrokerImpl.java:4022)
> at org.apache.openjpa.kernel.DelegatingBroker.close(
> DelegatingBroker.java:1282)
> at org.apache.openjpa.persistence.EntityManagerImpl.close(
> EntityManagerImpl.java:1002)
> at
> org.springframework.orm.jpa.JpaTransactionManager.doCleanupAfterCompletion
> (JpaTransactionManager.java:514)
> at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion
> (AbstractPlatformTransactionManager.java:919)
> at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback
> (AbstractPlatformTransactionManager.java:785)
> at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback
> (AbstractPlatformTransactionManager.java:730)
> at
> org.springframework.test.AbstractTransactionalSpringContextTests.endTransaction
> (AbstractTransactionalSpringContextTests.java:289)
> at
> org.springframework.test.AbstractTransactionalSpringContextTests.onTearDown
> (AbstractTransactionalSpringContextTests.java:233)
> at org.springframework.test.AbstractSingleSpringContextTests.tearDown(
> AbstractSingleSpringContextTests.java:125)
> at junit.framework.TestCase.runBare(TestCase.java:130)
> at org.springframework.test.ConditionalTestCase.runBare(
> ConditionalTestCase.java:69)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.access$001
> (AbstractAnnotationAwareTransactionalTests.java:47)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests$1.run
> (AbstractAnnotationAwareTransactionalTests.java:113)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTest
> (AbstractAnnotationAwareTransactionalTests.java:176)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTestTimed
> (AbstractAnnotationAwareTransactionalTests.java:150)
> at
> org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runBare
> (AbstractAnnotationAwareTransactionalTests.java:109)
> at org.springframework.test.jpa.AbstractJpaTests.runBare(
> AbstractJpaTests.java:174)
> at org.springframework.test.jpa.AbstractJpaTests.runBare(
> AbstractJpaTests.java:254)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(
> JUnit3TestReference.java:130)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(
> TestExecution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
> RemoteTestRunner.java:460)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
> RemoteTestRunner.java:673)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(
> RemoteTestRunner.java:386)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> RemoteTestRunner.java:196)
>
>
> Here is my JPA entity bean definition:
>
> package com.circuitcity.instantcredit.services.persistance.domain;
>
> import java.sql.Timestamp;
> import java.util.HashSet;
> import java.util.Set;
>
> import javax.persistence.CascadeType;
> import javax.persistence.Column;
> import javax.persistence.Entity;
> import javax.persistence.EntityListeners;
> import javax.persistence.FetchType;
> import javax.persistence.Id;
> import javax.persistence.OneToMany;
> import javax.persistence.Table;
> import javax.persistence.Version;
>
> //import org.hibernate.annotations.Cache;
> //import org.hibernate.annotations.CacheConcurrencyStrategy;
>
> import
> com.circuitcity.instantcredit.services.persistance.audit.AuditListenter;
> import com.circuitcity.instantcredit.services.persistance.audit.Auditable;
>
> /**
> * AcctCrrTbl entity.
> *
> * @author MyEclipse Persistence Tools
> */
> @Entity
> @Table(name = "acct_crr_tbl", uniqueConstraints = {})
> // @Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
> @EntityListeners(AuditListenter.class)
> @SuppressWarnings("serial")
> public class AccountCarrierTbl implements java.io.Serializable, Auditable
> {
>
> // Fields
>
> private String acctCrrCd;
> private String acctCrrNm;
> private String actvFlg;
> private Integer srtOrdNbr;
> private Timestamp crtDttm;
> private Timestamp lstUpdDttm;
> private String lstUpddByTxt;
> private Set<CreditApplicationTbl> crAppTbls = new
> HashSet<CreditApplicationTbl>(0);
>
> // Constructors
>
> /** default constructor */
> public AccountCarrierTbl() {
> }
>
> /** minimal constructor */
> public AccountCarrierTbl(String acctCrrCd, Timestamp crtDttm) {
> this.acctCrrCd = acctCrrCd;
> this.crtDttm = crtDttm;
> }
>
> /** full constructor */
> public AccountCarrierTbl(String acctCrrCd, String acctCrrNm, String
> actvFlg,
> Integer srtOrdNbr, Timestamp crtDttm, Timestamp lstUpdDttm,
> String lstUpddByTxt, Set<CreditApplicationTbl> crAppTbls) {
> this.acctCrrCd = acctCrrCd;
> this.acctCrrNm = acctCrrNm;
> this.actvFlg = actvFlg;
> this.srtOrdNbr = srtOrdNbr;
> this.crtDttm = crtDttm;
> this.lstUpdDttm = lstUpdDttm;
> this.lstUpddByTxt = lstUpddByTxt;
> this.crAppTbls = crAppTbls;
> }
>
> // Property accessors
> @Id
> @Column(name = "acct_crr_cd", unique = true, nullable = false,
> insertable = true, updatable = true, length = 10)
> public String getAcctCrrCd() {
> return this.acctCrrCd;
> }
>
> public void setAcctCrrCd(String acctCrrCd) {
> this.acctCrrCd = acctCrrCd;
> }
>
> @Column(name = "acct_crr_nm", unique = false, nullable = true,
> insertable = true, updatable = true, length = 50)
> public String getAcctCrrNm() {
> return this.acctCrrNm;
> }
>
> public void setAcctCrrNm(String acctCrrNm) {
> this.acctCrrNm = acctCrrNm;
> }
>
> @Column(name = "actv_flg", unique = false, nullable = true, insertable
> = true, updatable = true, length = 1)
> public String getActvFlg() {
> return this.actvFlg;
> }
>
> public void setActvFlg(String actvFlg) {
> this.actvFlg = actvFlg;
> }
>
> @Column(name = "srt_ord_nbr", unique = false, nullable = true,
> insertable = true, updatable = true)
> public Integer getSrtOrdNbr() {
> return this.srtOrdNbr;
> }
>
> public void setSrtOrdNbr(Integer srtOrdNbr) {
> this.srtOrdNbr = srtOrdNbr;
> }
>
> @Column(name = "crt_dttm", unique = false, nullable = false,
> insertable = true, updatable = true, length = 4)
> public Timestamp getCrtDttm() {
> return this.crtDttm;
> }
>
> public void setCrtDttm(Timestamp crtDttm) {
> this.crtDttm = crtDttm;
> }
>
> @Version
> @Column(name = "lst_upd_dttm", unique = false, nullable = true,
> insertable = true, updatable = true, length = 4)
> public Timestamp getLstUpdDttm() {
> return this.lstUpdDttm;
> }
>
> public void setLstUpdDttm(Timestamp lstUpdDttm) {
> this.lstUpdDttm = lstUpdDttm;
> }
>
> @Column(name = "lst_updd_by_txt", unique = false, nullable = true,
> insertable = true, updatable = true, length = 100)
> public String getLstUpddByTxt() {
> return this.lstUpddByTxt;
> }
>
> public void setLstUpddByTxt(String lstUpddByTxt) {
> this.lstUpddByTxt = lstUpddByTxt;
> }
>
> @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY,
> mappedBy = "acctCrrTbl")
> public Set<CreditApplicationTbl> getCrAppTbls() {
> return this.crAppTbls;
> }
>
> public void setCrAppTbls(Set<CreditApplicationTbl> crAppTbls) {
> this.crAppTbls = crAppTbls;
> }
>
> }
>
> Is this a table definition problem? This worked just fine under
> Hibernate.
>
> Ron
>
--
Ron DiFrango
Blog (www.captech-soa.blogspot.com)