Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EJB异常-尝试使用具有空会话的间接寻址遍历关系。_Java_Jakarta Ee_Jpa_Ejb_Ejb 3.0 - Fatal编程技术网

Java EJB异常-尝试使用具有空会话的间接寻址遍历关系。

Java EJB异常-尝试使用具有空会话的间接寻址遍历关系。,java,jakarta-ee,jpa,ejb,ejb-3.0,Java,Jakarta Ee,Jpa,Ejb,Ejb 3.0,这不是一个新的例外。我在stack overflow中浏览了很多论坛帖子,了解了为什么会发生这种情况。但我需要帮助来解决我的问题 我有两个实体bean设备类和设备类。下面是代码 public class EquipmentClass implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.

这不是一个新的例外。我在stack overflow中浏览了很多论坛帖子,了解了为什么会发生这种情况。但我需要帮助来解决我的问题

我有两个实体bean设备类和设备类。下面是代码

public class EquipmentClass implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "class_name")
    private String className;
    @Column(name = "description")
    private String description;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "equipmentClass")
    private Collection<Equipment> equipmentCollection;

    // getter and setter methods
 } 


public class Equipment implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "created_on")
    @Temporal(TemporalType.TIMESTAMP)
    private Date createdOn;
    @Basic(optional = false)
    @Column(name = "updated_on")
    @Temporal(TemporalType.TIMESTAMP)
    private Date updatedOn;
    @JoinColumn(name = "equipment_class", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private EquipmentClass equipmentClass;

    // setter and getter methods 

}
我在上面标记的(>><)行中遇到异常

如前所述,我尝试执行
ec.getEquipmentCollection().size()。但我有个例外


我应该如何进行?非常感谢您的帮助

我想如果您在检索
设备
实例后添加
设备.getEquipmentClass().getEquipmentCollection().size()
,它将解决您的问题
事实可能是,在调用getEquipmentCollection()的地方,persistence上下文不再可访问,但我需要有关上下文的其他信息来帮助您(ejb、事务上下文等).
您可以在引发异常的位置访问entityManager实例吗?

需要
equipmentFacade.create
方法内容。Imho它只是在方法调用处缺少持久性上下文的pb。getEntityManager().persist(entity);这正是create方法的内部。我实际上解决了这个问题。你的回答确实帮助我解决了这个问题。我所做的不是从
equipment.getEquipmentClass()检索设备类对象,我使用了
equipmentClassFacade.find(equipment.getEquipmentClass().getId())这帮助我获得设备类的当前持久对象。然后我简单地使用了
ec.getEquipmentCollection().add(设备)以添加对象。非常感谢你的回复。
  EquipmentClass ec = equipment.getEquipmentClass();   
 >>> ec.getEquipmentCollection().add(equipment); << 
  equipmentClassFacade.edit(ec);