【发布时间】:2013-12-31 03:08:09
【问题描述】:
我正在尝试从一个 EAR 项目访问实体 bean 到另一个 EAR 项目,但出现此错误。
异常描述:[类 com.huwag.ao.server.bvg.tarif.ejb.entity.Tarif] 使用非实体 [class com.huwag.server.ejb.entity.Mandant] 作为目标实体 关系属性 [field mandant]。
我的 Tarif 似乎找不到我的 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;
}
}
从结构上看是这样的。
我正在尝试从一个实体与另一个部署工件中的另一个实体建立关系。
我正在使用 Glassfish 4。我的 persistence.xml 中没有任何内容,因为据我了解,Glassfish 4 只是查找这些类,而不是查看 persistence.xml。
- 我是否正确使用了关系注释?
- 是否需要将这些实体放入 persistence.xml 文件中?
- 我是否需要提供本地/远程接口,以便一个 EAR 文件可以看到另一个?
- 是否有可能跨不同的打包工件在 EJB 之间形成这种关系?
【问题讨论】:
-
谢谢.. 我确实需要将实体放在我的持久性 XML 中。把它作为一个答案,然后我可以 +1 你。
-
您是否独立发布 EAR 文件?您肯定可以使用核心 EAR 中的 EJB,但我认为必须为它们提供远程 EJB 接口。
标签: java jakarta-ee jpa glassfish ejb