从表中获取所有记录 - EclipseLink

时间:2016-04-04 00:21:04

标签: java postgresql jpa eclipselink

我一直在尝试从EclipseLink中的表中获取所有行。

我使用JPA工具从db创建了我的实体。这是结果:

@Entity
@Table(name="employee", schema="hr")
@NamedQuery(name="Employee.findAll", query="SELECT e FROM Employee e")
public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    private String name;

    public Employee() {
    }

    public Integer getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

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

}

我发现很多页面人们创建Query对象来获取所有记录,但他们再次定义了这样的“select”查询。

Query q = em.createQuery("select e from Employee e");

但是做一个研究,最后我发现了这样的事情:

   public List<Employee> getEmployees() {
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("ResourcesService");
        EntityManager em = factory.createEntityManager();
        Query q = em.createQuery("from Employee e", Employee.class);
        return q.getResultList();
   }

有没有更简单的方法来查询,只需使用类名?因为映射的实体已包含选择查询。

我是指而不是这样做

   Query q = em.createQuery("from Employee e", Employee.class);

做一些像这个虚构的例子:

   Query q = em.createQuery(Employee.class);

1 个答案:

答案 0 :(得分:1)

为什么不使用您定义的命名查询?

em.createNamedQuery("Employee.findAll").getResultList();

你可以命名它&#34; Employee.class&#34; ......: - )