目前我们正在针对不同的模块开发EJB模块。它的意思是:用户,菜单等…但是JPA实体是否可能使用不同的EJB模块实体?
例如:这是我的菜单JPA实体在菜单EJB模块。
@Entity
@Table(name = "MENU")
public class Menu implements Serializable {
@Id
@Column(name = "MENU_ID", nullable = false, precision = 38, scale = 0)
private Long menuId;
//getter setter
}
但是我的User JPA实体需要在User EJB模块中使用Menu实体。
@Entity
@Table(name = "USER")
public class User implements Serializable {
@Id
@Column(name = "USER_ID", nullable = false, precision = 38, scale = 0)
private Long userId;
@JoinColumn(name = "MENU_ID", nullable = false)
@ManyToOne(optional = false)
private Menu menuId;
//getter setter
}
当我从用户EJB模块运行单元测试时,我得到以下错误:
[class com.user.User] uses a non-entity [class com.menu.Menu] as target entity in the relationship attribute [field menuId]
我该如何解决这个问题?还是可以使用?
还有什么是最好的方式来部署这些ejb模块在一起?谢谢你,Eba
如果您在persistence.xml中指定带有实体类的jar-file元素
<persistence>
<persistence-unit name="unit_name">
<jta-data-source>java:/DefaultDS</jta-data-source>
<jar-file>some_lib.jar</jar-file>
..................
或者直接指定实体类:
<class>some.entity.ClassName</class>