0

Apache ODE のソースコードで OpenJPA を使用して新しいテーブルを作成したいと考えています。インターフェイスを作成し、実装を提供しました。Maven を使用してプロセスをコンパイルし、Apache Tomcat にデプロイしました。しかし、Apache ODE エンジンで BPEL プロセスを実行すると、次のエラーが発生します。

org.apache.openjpa.persistence.PersistenceException: テーブル/ビュー 'ODE_POLICY_ATTACHMENT' が存在しません。

PolicyAttachmentDAOImpl クラスを ApacheODE\dao-jpa\src\main\resources\META-INF\persistence.xml に追加しました

persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         version="1.0">
<persistence-unit name="ode-dao">
    <!-- 
        This properties file is used specifically by the
        OpenJPA Enhancer.
     -->
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class>
    <class>org.apache.ode.dao.jpa.PolicyAttachmentDAOImpl</class>
    .............................................................
</persistence-unit>

私のDAO(データアクセスオブジェクト)インターフェース:

public interface PolicyAttachmentDAO {

 /**
 * Get the process.
 * 
 * @return process reference.
 */
 ProcessDAO getProcess();

 ...............
}

次に、次のようなクラスに実装しました。

@Entity
@Table(name = "ODE_POLICY_ATTACHMENT")
/**
 * 
 *       OpenJPA implementation of the {@link PolicyAttachmentDAO} interface.
 * 
 */
public class PolicyAttachmentDAOImpl extends OpenJPADAO implements PolicyAttachmentDAO{
@Id
@Column(name = "POLICYATTACHMENT_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long _attachmentId;

@ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST })
@Column(name = "PROCESS_ID")
private ProcessDAOImpl _process;

@Basic
@Column(name = "POLICYATTACHMENT_NAME")
private String _attachmentName;

@Basic
@Column(name = "POLICYATTACHMENT_FILE_DATE")
private Date _attachmentFileDate;

    public PolicyAttachmentDAOImpl(ProcessDAOImpl process, String policyAttachmentName, Date attachmentFileDate) {
      _process = process;
      _attachmentName = policyAttachmentName;
      _attachmentFileDate = attachmentFileDate;
    }

     public ProcessDAO getProcess() {
      return _process;
}

  .....................
 }

テーブルの作成方法を教えてくれる人はいますか?

ありがとう!ピーター

4

1 に答える 1

0

私は自分のテーブルを生成することができました。Apache ODE のソース コードにはさらに persistence.xml ファイルがあり、正しいファイルを編集していません。PolicyAttachmentDAOImpl クラスを ApacheODE\dao-jpa-ojpa-derby\src\test\resources\META-INF\persistence.xml に追加すると、テーブルが作成されました。

于 2014-02-05T14:15:29.960 に答える