我正在尝试在相当复杂的 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;
问题:如何创建@OneToOne
从SlaveEntity
to的关系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
,它将充当外键,指向 tableMasterEntityDto
的id
列。