Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
在使用JPA的JSF2.0中,无法从DataTable中删除对象_Jpa_Jsf 2 - Fatal编程技术网

在使用JPA的JSF2.0中,无法从DataTable中删除对象

在使用JPA的JSF2.0中,无法从DataTable中删除对象,jpa,jsf-2,Jpa,Jsf 2,} 我想从JSF中的DataTable中删除数据,但上面的代码没有得到任何输出。我正在尝试修复该代码,但没有得到任何输出。 在此之前,我在em.remove;的delete方法中得到了IllegaleException;。 有没有人可以纠正我的错误并对此表示感谢。由于您没有使用EJB,您必须手动管理所有DB事务。每次JPA EntityManager对实体执行DB操作时,都需要调用begin并提交自己。您没有在deleteEmployee方法中执行此操作 更好的做法是将所有JPA工作移到@Sta

}

我想从JSF中的DataTable中删除数据,但上面的代码没有得到任何输出。我正在尝试修复该代码,但没有得到任何输出。 在此之前,我在em.remove;的delete方法中得到了IllegaleException;。
有没有人可以纠正我的错误并对此表示感谢。

由于您没有使用EJB,您必须手动管理所有DB事务。每次JPA EntityManager对实体执行DB操作时,都需要调用begin并提交自己。您没有在deleteEmployee方法中执行此操作

更好的做法是将所有JPA工作移到@Stateless EJB中,并将其作为@EJB依次注入托管bean类中。这样你就不必再担心交易了。有关启动示例,请参见此答案的更新部分:

与具体问题无关,getter根本不应该执行DB操作。每次调用该方法时,getEmplist都会调用DB。这是不必要的昂贵。而是在bean的@PostConstruct方法中完成这项工作。另见

    package com.jee6.beans;

import com.jee6.entity.Employee;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.*;
import javax.transaction.SystemException;

@ManagedBean
@SessionScoped
public class EmployeeBean {
@PersistenceContext(unitName = "ServicePU")
private EntityManager em;
@Resource
private javax.transaction.UserTransaction utx;
private List<Employee> emplist=new ArrayList<Employee>();
//private Query sql="SELECT e FROM Employee e";
private Employee emp= new Employee();


public Employee getEmp() {
    return emp;
}

public void setEmp(Employee emp) {
    this.emp = emp;
}

public List<Employee> getEmplist() {
    return emplist=findAll();
}

public void setEmplist(List<Employee> emplist) {
    this.emplist = emplist;
}

public List<Employee> findAll(){
    emplist=(List<Employee>)em.createQuery("Select e From Employee e").getResultList();
    return emplist;
}
public EmployeeBean() {
}
public String saveEmployee(){
    persist(emp);
    return null;
}
public String deleteEmployee(Employee e){
   try{
       em.remove(e);
       emplist=findAll();
   } 
       catch (Exception ex)
    {
     Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exceptioncaught", ex);
    }
   return null;
 }
 public void persist(Object object) {
    try {
        utx.begin();
        em.persist(object);
        utx.commit();
    } catch (Exception e) {
      Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", e);
        throw new RuntimeException(e);
    }
}