1: у меня есть таблица, показанная ниже:
Имя Нет? Тип
ATX_ID NOT NULL NUMBER (16)
ATX_GLM_CD NOT NULL NUMBER (5)
ATX_CRDR_FLG NOT NULL VARCHAR2 (1)
ATX_AMT НЕ НУЛЬ НОМЕР (15,2)
ATX_STTS NOT NULL VARCHAR2 (1)
ATX_TCM_ID NOT NULL NUMBER (16)
ATX_TXN_DT NOT NULL DATE
ATX_CRTE_BY NOT NULL VARCHAR2 (30)
ATX_CRTE_DT NOT NULL DATE
Столбцы ATX_ID, ATX_GLM_CD и ATX_CRDR_FLG образуют составной первичный ключ.
2: Я создал класс бина сущности для приведенной выше таблицы следующим образом:
@ 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*/
}
@ Встраиваемые
открытый класс 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: при доступе к бину сущности через сессионный бин я получаю следующее исключение:
<[weblogic.servlet.internal.WebAppServletContext@1a1bc8f - appName: '_auto_generated_ear_', name: 'AWebApp', context-path: '/ AWebApp', spec-version: '2.5'] Сбой сервлета в исключении
javax.ejb.EJBException: EJB Exception:; Вложенное исключение:
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)
на $ Proxy127.gottaAccessEntity3 (неизвестный источник)
в jsp_servlet .__ результат. <em>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: Пожалуйста, помогите мне решить проблему.
Спасибо!