1:我有一张如下表所示的表格:
名称空?型
ATX_ID非空数(16) ATX_GLM_CD非空数(5) ATX_CRDR_FLG NOT NULL VARCHAR2(1) ATX_AMT非空数(15,2) ATX_STTS NOT NULL VARCHAR2(1) ATX_TCM_ID非空数(16) ATX_TXN_DT非空日期 ATX_CRTE_BY NOT NULL VARCHAR2(30) ATX_CRTE_DT NOT NULL DATE
列ATX_ID,ATX_GLM_CD和ATX_CRDR_FLG形成复合主键。
2:我为上表创建了一个实体bean类,如下所示:
@Entity 公共类AcctngTxns实现Serializable {
private BigDecimal atxAmt;
private String atxStts;
private BigDecimal atxTcmId;
private Date atxTxnDt;
private String atxCrteBy;
private Date atxCrteDt;
@EmbeddedId 私人AcctngTxnsPK acctngTxnsPK;
public AcctngTxns() {
//super();
}
/*getters and setters*/
}
@Embeddable 公共类AcctngTxnsPK实现Serializable {
private long atxId;
private long atxGlmCd;
private String atxCrdrFlg;
private static final long serialVersionUID = 1L;
public AcctngTxnsPK() {
//super();
}
/*necessary overrides*/
}
3:/ orm.xml /
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd” 版本= “1.0” >
4:/ persistence.xml /
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> 数据源 com.nseit.ncfm2.data.ejb.entity.AcctngTxns
5:通过会话bean访问实体bean时,我遇到以下异常:
< [weblogic.servlet.internal.WebAppServletContext@1a1bc8f - appName:'_ auto_generated_ear_',name:'AWebApp',context-path:'/ AWebApp',spec-version:'2.5'] Servlet因异常而失败 javax.ejb.EJBException:EJB异常:;嵌套异常是: org.apache.openjpa.persistence.ArgumentException:字段“com.nseit.ncfm2.data.ejb.entity.AcctngTxns.acctngTxnsPK”不是默认持久性类型,并且没有任何注释指示其持久性策略。如果您不希望保留这些字段,请使用@Transient注释它们。 在weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:105) 在weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:87) at $ Proxy127.gottaAccessEntity3(Unknown Source) 在jsp_servlet .__ result。 jspService( _result.java:115) 在weblogic.servlet.jsp.JspBase.service(JspBase.java:34) 截断。查看日志文件以获取完整的堆栈跟踪 org.apache.openjpa.persistence.ArgumentException:字段“com.nseit.ncfm2.data.ejb.entity.AcctngTxns.acctngTxnsPK”不是默认持久性类型,并且没有任何注释指示其持久性策略。如果您不希望保留这些字段,请使用@Transient注释它们。 在org.apache.openjpa.persistence.PersistenceMetaDataFactory.validateStrategies(PersistenceMetaDataFactory.java:399) 在org.apache.openjpa.persistence.PersistenceMetaDataFactory.load(PersistenceMetaDataFactory.java:205) 在org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:474) 在org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:294) 在org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1114) 截断。请参阅日志文件以获取完整的堆栈跟踪
7:当然,我不希望更新主键字段。
8:我试图找出JPA文档中提到的以下几点的实现:
8:请帮我解决问题。
谢谢!
答案 0 :(得分:1)
我通过反复试验方法找到了解决方案。看来,对于JPA 1.0,有必要在orm.xml文件中提及嵌入式ID,如下所示:
感谢。