Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自多个persistenceUnits的实体上的JPA级联_Java_Hibernate_Jpa_Jpa 2.1 - Fatal编程技术网

Java 来自多个persistenceUnits的实体上的JPA级联

Java 来自多个persistenceUnits的实体上的JPA级联,java,hibernate,jpa,jpa-2.1,Java,Hibernate,Jpa,Jpa 2.1,我在两个实体之间存在单向关系: *@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 St

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

*@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;
}*
这些实体属于同一数据库中的不同模式(但我可能不使用synonims,也不向模式授予权限…),因此我有两个持久性单元:

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

2.persistenceUnit(yyy)-实体yyy映射到此处

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

这将创建两个对象


可能吗?谢谢你的帮助。Im使用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的任何内容,但请参见,例如,以下Eclipse功能:

从EclipseLink 2.3.0开始,JPA开发人员现在可以组合 持久化单元在运行时组合在一起,允许存储实体 在不同的数据库中这包括对关系的支持 在不同持久性单元中的实体之间(跨 数据库)


不,我不能,正如我之前所说的:实体属于同一数据库中的不同模式(但我可能不使用synonims,也可能不授予模式…)。所以一个模式看不到另一个。
@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;
}