Fehler beim Kompilieren der Abfrage: Der abstrakte Schematyp 'Entity' ist unbekannt

7

Ich entwickle ein Spiel mit einer Datenbankverbindung und verwende JPA, um meine Daten zu erhalten. Hier ist meine Spieleinheit:

%Vor%

Und hier ist mein menschliches Wesen:

%Vor%

Um die Liste aller in der Datenbank gespeicherten Menschen zu erhalten, benutze ich dieses DAO, das sehr gut funktioniert und auch die Building entity:

bekommt %Vor%

Das Problem ist, wenn ich versuche, das gleiche zu tun, um die Liste aller Spiele mit der JPQL-Abfrage SELECT g FROM game g zu bekommen, bekomme ich diesen Fehler:

%Vor%     
Mohamed Amine 25.11.2013, 12:50
quelle

6 Antworten

18

Sie sollten

haben %Vor%

aber Sie haben game anstelle von Game .

Die Annotation @Table wird für DB verwendet. Wenn Sie den Namen in Ihrem JPQL ändern müssen, verwenden Sie die Annotation @Entity: @Entity (name="nameUsedInJPQL") = & gt; nameUsedInJPQL wird in Ihrem JPQL verwendet. Wenn Sie in Ihrer @Entity nichts angeben, wird der Groß- / Kleinschreibung-Name der Entity verwendet.

    
Andrei I 25.11.2013, 12:51
quelle
4

In meinem Fall habe ich vergessen, es in persistence.xml zu registrieren.

    
meurer 12.07.2014 16:40
quelle
3

Ich hatte gerade die gleiche Situation, aber meine JPQL-Abfrage war korrekt! Es ist in Glassfish 4.1 (Build 13) (mit EclipseLink) aufgetreten.

Nach einigem googeln und Code-Kommentieren fand ich heraus, dass die Ursache von " Der abstrakte Schematyp 'MyEntity' ist unbekannt " war einige Verwendung von Java 8 Lambda-Code darin die Entitätsklasse .

Es scheint, dass jedes Feature von Java 8 (noch) nicht in der Version von EclipseLink unterstützt wird, die mit GF geliefert wird. Weitere Informationen finden Sie in dem Fehlerbericht dazu.

Hoffe, das hilft.

    
user1853859 06.07.2015 12:40
quelle
2

Der Name, der für JPQL-Abfragen verwendet wird, ist als einfacher Name der Entitätsklasse definiert - Game oder Human in Ihrem Fall. Sie kann durch das name -Attribut der @Entity -Anmerkung überschrieben werden. @Table ist eine Annotation für physische Zuordnungen und hat keinen Einfluss auf den Entitätsnamen in der Abfrage.

Es funktioniert mit human , weil die Abfragezeichenfolge nicht zwischen Groß- und Kleinschreibung unterscheidet.

    
kostja 25.11.2013 12:58
quelle
1

Klassenname sollte nicht der Tabellenname in Ihrer Abfrage sein SELECT g FROM Spiel g

    
Manish Kr 27.01.2017 06:47
quelle
0

Wir haben das Problem aufgrund einer Aktualisierung der Bibliothek org.eclipse.persistence.eclipselink von 2.4.0 auf 2.5.1. Nach dem Update auf 2.6.2 funktioniert es wieder.

    
tareq 08.07.2016 07:40
quelle

Tags und Links