2016-04-04 18 views
1

Ich habe versucht, alle Zeilen aus der Tabelle in EclipseLink zu bekommen.Holen Sie sich alle Datensätze aus der Tabelle - EclipseLink

Ich habe meine Entitäten aus db mit den JPA-Tools erstellt. Dies ist das Ergebnis:

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

} 

ich viele Seiten gefunden, wo die Menschen schaffen Abfrage Objekt alle Datensätze zu erhalten, aber sie definieren wieder die „select“ Abfrage wie folgt.

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

Aber eine Forschung, schließlich fand ich etwas wie folgt aus:

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

Gibt es eine noch einfachere Möglichkeit, dies zu fragen, nur den Klassennamen verwenden? Weil die zugeordnete Entität bereits die Auswahlabfrage enthält.

Ich meine, anstatt dies zu tun

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

so etwas wie dieses fiktive Beispiel zu tun:

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

Antwort

0

Warum die benannte Abfrage nicht verwenden Sie definiert haben?

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

Sie nennen könnte "Employee.class" ... :-)

+0

Danke. Ich habe dieses Attribut in meiner Entität nicht erkannt. Ich dachte, dass es intern vom eclipselink-Framework automatisch verwendet wurde. Und außerdem dachte ich, dass das als Teil der Konfiguration das nicht ändern könnte. Jetzt weiß ich, dass das flexibler ist. –

+0

Großartig. Sie können alle gewünschten NamedQueries erstellen. –

Verwandte Themen