Ich versuche, die letzten 5 eingefügten Daten in der Tabelle 'Vulcano' aus der Tabelle 'Ausführung' abzurufen, verwende EclipseLink, Facade-Klasse, die diese Abfrage aufruft der Moment;Wie die letzten 2 Datensätze in einer Tabelle mithilfe von JPA in Java abgerufen werden
Hier ist ein Teil der Fassade Klasse am verwenden;
public ArrayList<ExecutionPOJO> getLatestsVulcanoExecutions() {
ArrayList<ExecutionPOJO> vulcanoExecutions = new ArrayList<ExecutionPOJO>();
//SELECT x FROM Magazine x order by x.title asc, x.price desc
**List<Execution> excutionVulcanoList = em.createQuery("select s from Execution s order by s.vulcano_idVulcanoID desc limit 2 ").getResultList();**
Wenn ich die obige Abfrage verwenden bekomme ich diesen Fehler:
Caused by: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing the query [select s from Execution s order by s.vulcano desc limit 2], line 1, column 50: syntax error at [limit].
Internal Exception: MismatchedTokenException(80!=-1)
Aber wenn ich das Limit Tag ich diesen Fehler entfernen;
Caused by: Exception [EclipseLink-8021] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Error compiling the query [select s from Execution s order by s.vulcano desc], line 1, column 36: invalid ORDER BY item [s.vulcano] of type [uk.ac.aston.tomtom.entity.Vulcano], expected expression of an orderable type.
.
@Entity
public class Execution implements Serializable {
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idExecution;
@ManyToOne(targetEntity = Vulcano.class)
private Vulcano vulcano;
*//Few others @ManyToOne
//also @oneToMany*
public Vulcano getVulcano() {
return vulcano;
}
public void setVulcano(Vulcano vulcano) {
this.vulcano = vulcano;
}
//other getter and setter
}
Hier ist eine andere Entität;
@Entity
public class Vulcano implements Serializable {
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idVulcano;
@OneToMany(targetEntity=Execution.class, mappedBy="vulcano", cascade=CascadeType.ALL)
private List<Execution> executions;
public List<Execution> getExecutions() {
return executions;
}
public void setExecutions(List<Execution> executions) {
this.executions = executions;
}
//other getters and setters
nicht in der Lage sein, Stern zu verwenden, da es einen Fehler warf; Ausnahme Beschreibung: Syntaxfehler beim Analysieren der Abfrage [Wählen Sie * aus Ausführungsreihenfolge von s.vulcano desc], Zeile 1, Spalte 7: unerwartetes Token [*]. – user1321704
@ user1321704: Wählen Sie die Spalten, die Sie lesen möchten, wie 'wählen Sie col1, col2, col3 aus der Zeitschriftenbestellung nach Titel asc, Preisbezeichnung 'aus –