gpt4 book ai didi

java - 来自多个 persistenceUnit 的实体上的 JPA 级联

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:25 26 4
gpt4 key购买 nike

我在两个实体之间有单向关系:

*@Entity
public class XXX{
@Id
private Long Id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "YYY_ID")
private YYY yyy;
}
@Entity
public class YYY{
@Id
private Long Id;

private String someName;
}*

这些实体属于同一数据库中的不同模式(但我可能不使用同义词,或授予模式授权......),所以我有两个持久性单元:

1.persistenceUnit(xxx) - 实体 xxx 映射到那里

2.persistenceUnit(yyy) - 实体 yyy 映射到那里

我可以让 jpa 在另一个持久单元上自动执行级联吗?示例:

@PersistenceContext(unitName = "xxx")
private EntityManager em;

XXX xxx = new XXX();
YYY yyy = new YYY();
yyy.setSomeName("just some name"):
xxx.setYYY(yyy);
em.persist(xxx);

这应该创建两个对象...

这可能吗?帮助表示赞赏。我在 Jboss7 上使用 JPA2、Hibernate 4

最佳答案

JPA 规范不强制要求支持跨多个持久单元的映射。

但是,您可以根据您的数据库权限,使用一个持久性单元并使用 @Table 注释为不在默认架构中的任何实体指定架构/目录。

@Entity
@Table(schema="xyz")
public class XXX{
@Id
private Long Id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "YYY_ID")
private YYY yyy;
}

否则,您需要在数据库级别寻找解决方案或考虑使用特定于提供商的解决方案:我对 Hibernate 不了解,但请参阅以下 EclipseLink 功能:

https://wiki.eclipse.org/EclipseLink/Examples/JPA/Composite

Starting with EclipseLink 2.3.0 JPA developers can now combine persistence units together at runtime allowing entities to be stored in different databases. This includes support for relationships between entities in different persistence units (references across databases)

关于java - 来自多个 persistenceUnit 的实体上的 JPA 级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com