簡體   English   中英

多個持久性單元獲取未知實體異常

[英]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.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>
</persistence-unit>

<persistence-unit name="pahse2-pu">
    <class>my.lookup.entity.Person</class>
</persistence-unit>

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;
}

人.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;
}

持久性單元有自己的實體管理器,它們通常是針對不同的數據庫或架構而明確地分開的。

您不能跨持久性單元映射實體。可以定義存在於兩個持久性單元中的相同實體類。

您必須為一個數據庫或模式僅創建一個持久性單元。如果在您的應用程序中使用兩個不同的數據庫,則使用兩個持久性單元。每個持久性都會創建自己的實體管理器。 在您的代碼中它看起來不像兩個數據庫。 僅使用一個持久性單元。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM