【发布时间】:2013-10-29 22:11:25
【问题描述】:
我正在尝试在相当复杂的 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 是 provide-interface-ing 一个 使用 Dto 而不是 Dto 的服务。
我在捆绑包开始时看到的异常是org.osgi.framework.BundleException: Unresolved constraint in bundle slavebundle [121]: Unable to resolve 121.8: missing requirement [121.8] osgi.wiring.package;
问题:如何创建从SlaveEntity 到MasterEntityDto 的@OneToOne 关系?这在使用 OSGi 服务平台时是不可能的吗?我只公开服务而不是整个包/包?
编辑1
根据要求:MasterEntityDto 没什么特别的。
@Entity(name = "MasterEntityDto")
public class MasterEntityDto {
@Id
@Column(name = "id", length = 128)
private String masterId;
// snip
}
我希望 JPA 制作一个 SlaveEntity - 表,其中包含 SlaveId 列(这是这个表 PK)和 masterEntity_id 作为外键,指向表 MasterEntityDto 的 id 列.
【问题讨论】:
-
你能显示你的
MasterEntityDto的代码吗?数据库中的哪一列包含外键? -
我用
MasterEntityDto的代码更新了我的帖子。我不确定这是否真的相关。还试图描述表格应该是什么样子。我说的是单向的一对一关系,因为我无法修改MasterEntityDto。我只是想增强它。此外,不用说,实际代码是不同的——更复杂,更渴望这篇文章。这只是它的精髓。