![](/img/trans.png)
[英]Can one entity be persisted to multiple persistence units using OpenJPA?
[英]Multiple persistence-units getting unknown entity exception
实际上,我在persistence.xml
中有2个持久性单元,其中Gender实体是在phase1-pu
持久性单元中配置的,Person是在phase2-pu
配置的。 在个人实体中,我想将@ManyToOne to Gender Entity
添加@ManyToOne to Gender Entity
。
当我启动应用程序时,出现以下错误:
[错误]无法在项目查找其余部分上执行目标de.juplo:hibernate-maven-plugin:2.0.0:create(h2-create-pris-p2):执行目标de.juplo的h2-create-pris-p2 :hibernate-maven-plugin:2.0.0:创建失败:my.mimos.entity.Person.gender上的@OneToOne或@ManyToOne引用了未知实体:my.mimos.entity.Gender-> [帮助1] [错误]
[错误]要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。
[错误]使用-X开关重新运行Maven以启用完整的调试日志记录。 [错误] [错误]有关错误和可能的解决方案的更多信息,请阅读以下文章:[错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
以下是我的设置
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="phase1-pu">
<class>my.lookup.entity.Gender</class>
</persistence-unit>
<persistence-unit name="pahse2-pu">
<class>my.lookup.entity.Person</class>
</persistence-unit>
@Entity
@Table(name = "REF_GENDER")
public class Gender extends AbstractEntity<Byte> {
@Id
@Access(AccessType.PROPERTY)
private Byte id;
@NotBlank
@Size(max = 100)
@Column(nullable = false, length = 100)
private String name;
@NotBlank
@Size(max = 10)
@Column(nullable = false, length = 10)
private String code;
}
@Entity
@Table(name = "REF_PERSON")
public class Person extends AbstractEntity<Byte> {
@Id
@Access(AccessType.PROPERTY)
private Byte id;
@NotBlank
@Size(max = 100)
@Column(nullable = false, length = 100)
private String name;
@NotBlank
@Size(max = 10)
@Column(nullable = false, length = 10)
private String code;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "gender_id")
private Gender gender;
}
持久性单元有自己的实体管理器,它们通常是针对不同的数据库或架构而明确地分开的。
您不能跨持久性单元映射实体。可以定义存在于两个持久性单元中的相同实体类。
您必须为一个数据库或模式仅创建一个持久性单元。如果在您的应用程序中使用两个不同的数据库,则使用两个持久性单元。每个持久性都会创建自己的实体管理器。 在您的代码中它看起来不像两个数据库。 仅使用一个持久性单元。
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="phase1-pu">
<class>my.lookup.entity.Gender</class>
<class>my.lookup.entity.Person</class>
</persistence-unit>
</persistence>
Gender.java
@Entity
@Table(name = "REF_GENDER")
public class Gender extends AbstractEntity<Byte> {
@Id
@Access(AccessType.PROPERTY)
private Byte id;
@NotBlank
@Size(max = 100)
@Column(nullable = false, length = 100)
private String name;
@NotBlank
@Size(max = 10)
@Column(nullable = false, length = 10)
private String code;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "gender", targetEntity = Person.class)
private List<Person> persons = new ArrayList();
}
人.java
@Entity
@Table(name = "REF_PERSON")
public class Person extends AbstractEntity<Byte> {
@Id
@Access(AccessType.PROPERTY)
private Byte id;
@NotBlank
@Size(max = 100)
@Column(nullable = false, length = 100)
private String name;
@NotBlank
@Size(max = 10)
@Column(nullable = false, length = 10)
private String code;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "gender_id")
private Gender gender;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.