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