0

かなり複雑な OSGi 環境で JPA を使用して、単純な外部キー関係シップを設定しようとしています。

使用したい 2 つのエンティティは、次のようにバンドルで構成されています。

masterbundle
|->org.masterpackage.persistence
   |-> MasterEntityDto.java
slavebundle
|->org.slavepackage.persistence
   |-> SlaveEntity.java

SlaveEntityなどを参照しMasterEntityDtoたい

@Entity(name = "SlaveEntity")
public class SlaveEntity {
  @Id
  @Column(name = "slaveID")
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;

  @OneToOne
  @JoinColumn(name = "masterEntity_id")
  private MasterEntity masterEntity;
  // snip..
}

現在、MasterEntityDto (またはそのパッケージ) をエクスポートしていないため、これは失敗しているmasterbundleと思います。OSGi のサービス アスペクトを使用しています。masterBundle は、Dtoの代わりにDto を使用provide-interfaceするサービスです。バンドルの開始時に表示される例外には、とりわけorg.osgi.framework.BundleException: Unresolved constraint in bundle slavebundle [121]: Unable to resolve 121.8: missing requirement [121.8] osgi.wiring.package;

質問: からへの@OneToOneリレーションを作成するにはどうすればよいですか? OSGi サービス プラットフォームを使用していて、サービスのみを公開し、バンドル/パッケージ全体を公開していない場合、これは不可能ですか?SlaveEntityMasterEntityDto

Edit1 リクエストによると:MasterEntityDto空想は何もありません。

@Entity(name = "MasterEntityDto")
public class MasterEntityDto {
@Id
@Column(name = "id", length = 128)
private String masterId;
// snip 
}

SlaveEntityJPA に- 列SlaveId(このテーブル PK) を持つテーブルを作成し、テーブルの列masterEntity_idを指す外部キーとして機能するようにしたいと思います。MasterEntityDtoid

4

1 に答える 1

1

ドメイン クラス (MasterEntityDto など) を含むパッケージは、エクスポートする必要があります。これにより、JPA バンドルはそれらをインスタンス化するための可視性を持つことができます。

このため、このようなパッケージを、非公開にする必要がある実装/ロジック コードを含む他のパッケージから分離しておくことが非常に重要です。

于 2013-10-21T19:33:06.393 に答える