2016-07-15 8 views
4

Ich habe Implementierung begonnen PPV zu lernen, und ich habe auf vielen Websites durchsucht und ich konnte keine Erklärung zu diesem Beispiel finden:eine Abfrage mit @NamedQuery mit einem ‚SELECT OBJECT (var) FROM EntityName var

Ausführungs eine Abfrage mit @NamedQuery:

@Entity 
    @NamedQuery(
    name="findAllEmployeesByFirstName", 
    queryString="SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = 'John'" 
) 
public class Employee implements Serializable { 
... 
} 

ich kann einfach nicht verstehen, warum der Autor eines Objekts ist die Auswahl (emp) .. warum er so etwas wie dieses SELECT emp FROM Employee emp WHERE emp.firstName = 'John' verwendet nicht

gibt es einen Unterschied? Vermisse ich etwas?

Antwort

2

Der Unterschied besteht darin, dass zwar Pfadausdrücke zu einem Entitätstyp aufgelöst werden können, die Syntax des OBJECT-Schlüsselworts jedoch auf Identifikationsvariablen beschränkt ist.

Sie können OBJECT sicher aus der Abfrage entfernen.

Um ein Beispiel zu machen, wenn Mitarbeiter eine Beziehung mit einer Abteilung Entität hat, diese Abfrage illegal verwendet Objekt wäre:

für Ihre Zeit
SELECT OBJECT(emp.department) FROM Employee emp WHERE emp.firstName = 'John' // Not valid 
SELECT emp.department FROM Employee emp WHERE emp.firstName = 'John' // Valid 
+0

Erklärung ein wenig kompliziert, aber Sie haben Recht. Gutes Beispiel. +1 – davidxxx

3
SELECT OBJECT(emp) FROM Employee emp 

ist genau die gleiche wie

SELECT emp FROM Employee emp 

die JPA-Spezifikation finden. [69] Beachten Sie, dass das Schlüsselwort OBJECT nicht benötigt wird. Es ist bevorzugt, dass es für neue Abfragen weggelassen wird.

Der Ursprung von "OBJECT" ist in EJBs (jetzt veraltet).

+0

Danke @Neil zu beantworten! – Andreea

2

Sie sind synonyme Ausdrücke bei der Auswahl von Entitäten. Es ist das gleiche, wenn Sie in Java interface deklarieren, können Sie abstract interface erklären, aber es ist länger und es bringt nichts, also niemand tut es.

+0

Danke @davidhxxx! – Andreea

+0

Sie sind willkommen :) – davidxxx