2016-04-04 126 views
1

我一直試圖從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 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(); 
    } 

是否有查詢此,只使用類名稱的更簡單的方式?因爲映射的實體已經包含select查詢。

我的意思不是這樣

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

要做到像這個虛構的例子:

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

回答

0

爲什麼不使用已定義的命名查詢?

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

你可以將其命名爲 「Employee.class」 ... :-)

+0

感謝。我沒有意識到在我的實體中的屬性。我認爲它在內部被eclipselink框架自動使用。另外,我認爲這不能改變它作爲配置的一部分。現在我知道這更靈活了。 –

+0

太好了。你可以創建所有你想要的'NamedQueries'。 –

相關問題