2016-04-04 27 views
1

Tüm satırları EclipseLink'te tablodan almaya çalışıyorum.Tablodan tüm kayıtları al - EclipseLink

Ben nesnelerini db'den JPA araçlarıyla oluşturdum. Bu sonuç ise: İnsanların tüm kayıtları almak için Sorgu nesnesi oluşturmak birçok sayfa bulundu

@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; 
    } 

} 

ama tekrar böyle "select" sorgu tanımlamak.

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(); 
    } 

sadece sınıf adını kullanarak, bu sorgulamak için bir daha basitleştirilmiş bir yolu var mı:

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

Ama bir araştırma yapıyor, nihayet böyle bir şey bulduk? Eşlenen varlık zaten seçme sorgusunu içerdiğinden.

yerine bu kurgusal örnekte böyle bir şey yapmak için bu

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

yapmanın anlamı:

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

cevap

0

Neden tanımladığınız adlandırılmış sorgu kullanılmasın? Sen "Employee.class" şeklinde adlandırır olabilir

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

... :-)

+0

teşekkürler. Varlığımdaki varlığım farkında değildim. Eclipinkink framework tarafından otomatik olarak kullanıldığını düşündüm. Ve ek olarak, bunu konfigürasyonun bir parçası olarak değiştiremeyeceğini düşündüm. Şimdi bunun daha esnek olduğunu biliyorum. –

+0

Harika. İstediğiniz tüm 'NamedQueries' oluşturabilirsiniz. –