0

我正在尝试在相当复杂的 OSGi 环境中使用 JPA 建立一个简单的外键关系。

我要使用的两个实体的结构如下:

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..
}

现在,我认为这失败masterbundle了,因为没有导出 MasterEntityDto (或其包)。我们正在使用 OSGi 的服务方面,masterBundle 是使用 Dto 而不是 Dtoprovide-interface服务。我在捆绑包开始时看到的异常说,除其他外org.osgi.framework.BundleException: Unresolved constraint in bundle slavebundle [121]: Unable to resolve 121.8: missing requirement [121.8] osgi.wiring.package;

问题:如何创建@OneToOneSlaveEntityto的关系MasterEntityDto?在使用 OSGi 服务平台并且我只公开服务而不是整个捆绑包/包时,这不可能吗?

Edit1 根据要求:MasterEntityDto没有什么花哨的。

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

我希望 JPA 制作一个SlaveEntity- 带有列的表SlaveId(这是这个表 PK)masterEntity_id,它将充当外键,指向 tableMasterEntityDtoid列。

4

1 回答 1

1

确实需要导出包含域类(例如 MasterEntityDto)的包,以便 JPA 包可以具有实例化它们的可见性。

因此,将此类包与包含实现/逻辑代码的其他包分开非常重要,这些包应该是私有的。

于 2013-10-21T19:33:06.393 回答