2013-12-12 23 views
0

我想從一個EAR項目訪問實體bean到另一個EAR項目,但我得到這個錯誤。無法在EAR項目之間形成EJB關係。關係屬性異常?

異常描述:類 com.huwag.ao.server.bvg.tarif.ejb.entity.Tarif]使用非實體 [類com.huwag.server.ejb.entity.Mandant]作爲 關係屬性[字段權限]中的目標實體。

它看起來像我的塔裏夫找不到我Mandant實體。 Tarif生活在一個耳朵文件中,而Mandant生活在另一個文件中(可以說是核心項目)。

我Mandant(以核心項目)是這樣的:

@Entity 
@Table(name = "HUW_AO_MANDANT") 
public class Mandant implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name = "MANDANT_ID") 
    private Long id; 

    @Column(name = "NAME") 
    private String name; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    }  
} 

在我的依賴EAR JAR住這個傢伙:

@Entity 
@Table(name = "HUW_AO_TARIF") 
@NamedQueries({ 
    @NamedQuery(
      name = "getAllTarif", 
      query = "SELECT t FROM Tarif t") 
     , 
    @NamedQuery(
      name = "getTarifForMandant", 
      query = "SELECT t FROM Tarif t where t.mandantId = :mandant") 
}) 
public class Tarif implements Serializable { 

    @Id 
    @Column(name = "NAME") 
    private String name; 

    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) 
    @JoinColumn(name="MANDANT_ID") 
    private Mandant mandant; 


    public Mandant getMadant() { 
     return mandant; 
    } 

    public void setMadant(Mandant mandant) { 
     this.mandant = mandant; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String firstName) { 
     this.name = firstName; 
    } 
} 

Architectually它看起來像這樣。

enter image description here

我試圖形成從一個實體上的另一個實體,生活在另一個部署神器的關係。

我正在使用Glassfish 4.我的persistence.xml中沒有任何東西,因爲據我所知,Glassfish 4只是找到這些類,而不是查看persistence.xml。

  • 我是否正確使用關係註釋?
  • 我是否需要將這些實體放在persistence.xml文件中?
  • 我是否需要提供本地/遠程接口,以便一個EAR文件可以看到另一個?
  • 是否有可能在不同包裝工件之間形成EJB之間的這種關係?
+0

謝謝..我確實需要將實體放入我的持久性XML中。把它作爲答案,然後我可以給你+1。 –

+0

您是否獨立發佈EAR文件?您一定能夠使用核心EAR中的EJB,但我認爲必須爲它們提供遠程EJB接口。 –

回答

1

如果從屬耳朵中沒有任何persistence.xml文件,我懷疑glassfish會知道它必須在那裏使用什麼實體。所以我想你需要使用persistence.xml文件中的<jar-file> XML元素導入該依賴項。你也正確映射它們,雖然我會去一個int ID而不是一個字符串。

+0

今天晚些時候會查看jar文件。謝謝 –