我目前正在为许多数据类构建持久层,我可以不更改。这些类没有Id属性/字段,这使它们不适合在ORM中使用。
对我来说最好的情况是某些自动生成的ID,它们只存在于数据库中以相对于彼此设置对象。遗憾的是,这似乎不可能使用JPA apis。
由于上述方法没有成功,我决定尝试使用简单的包装器@Entity对象,如下所示:
@Entity
public class ThirdPartyObjectWrapper {
@Id private long id;
@Embedded private ThirdPartyObject myThirdPartyObject;
}
这种方法在数据库中运行良好,但是我在将对象从包装器中取出并放入另一个第三方对象中时遇到了问题。
public class AnotherThirdPartyObject {
private ThirdPartyObject object; //Actually in a Many-To-One-Relationship
}
因为它们是第三方对象,所以我将它们映射到定义那里关系的orm.xml文件。在这个时间点,关系映射看起来像这样:
<many-to-one name="object"
target-entity="ThirdPartyObjectWrapper"/>
但是通过此设置,Hibernate会尝试将ThirdPartyObjectWrapper.id
插入AnotherThirdPartyObject.object
字段,这显然会失败。
我现在的问题是:
我正在尝试甚至可能吗?