JPA NamedQuery mit Enum-Wert

Hallo Java-Forum,

Ich arbeite derzeit mit JSF und JPA an einer Lösung und bin nun darauf gekommen, verschiedene Typen als enums anstatt mit einfachen Konstanten zu pflegen, was diverse Vorteile bringt.

Da ich NamedQueries einsetzte, habe ich auch dort gebrauch davon gemacht. Allerdings wirft mir der Java-Compiler bei folgendem Versuch eine Fehlermeldung an den Kopf.

The value for annotation attribute NamedQuery.query must be a constant expression

Java:
@NamedQuery(name = ProjectCardParameter.QUERY_BY_PROJECT_TYPE, query = "SELECT pcp FROM ProjectCardParameter pcp WHERE (pcp.projectType = :projectType1 OR pcp.projectType = " + Constants.ProjectType.ANY + ") ORDER BY pcp.defaultVisibility ASC, pcp.name ASC"),

Wenn ich den Teil
Java:
OR pcp.projectType = " + Constants.ProjectType.ANY
wegnehme, passt es, aber ich brauche diesen Teil. Mir fallen zwar einige Wege ein dies zu umschiffen, aber eigentlich würde ich gerne verstehen warum das so ist bzw. wie ich dies richtig machen kann?

Gruß

Sebastian
 

xerberuz

Bekanntes Mitglied
Der Compiler muss bei Annotation zur compilezeit den endgültigen Wert bestimmen können. Da es möglich ist die toString Methode von Constants.ProjectType.ANY zu überschreiben, kann der endgültige Wert nicht bestimmt werden.
 
Ok,

erstmal danke für die Antwort. Verstehen tue ich es trotzdem nicht. Zur Compile-Zeit steht doch fest, wie die toString()-Methode aussieht.???:L

Wenn ich das richtig im Kopf habe. macht der Compiler aus den enum-Deklarationen doch jeweils eine Klasse mit entsprechenden Wert-Konstanten für die einzelnen enum-Werte.
Java programming language enum types are much more powerful than their counterparts in other languages. The enum declaration defines a class (called an enum type). The enum class body can include methods and other fields. The compiler automatically adds some special methods when it creates an enum. For example, they have a static values method that returns an array containing all of the values of the enum in the order they are declared.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
turmaline [Hibernate] NamedQuery nur einzelne Felder Datenbankprogrammierung 3
S NamedQuery mit count Datenbankprogrammierung 2
P Enum in der Datenbank Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
E Datentyp enum und tinytext in sql-Befehl Datenbankprogrammierung 5
Z SQL Ergebnis in Integer Wert abspeichern Datenbankprogrammierung 3
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
B SQL-Statement Prüfen ob eine Spalte einen Wert enthält Datenbankprogrammierung 2
Streeber MySQL Funktion gesucht, die angibt, wie oft ein Wert auftritt Datenbankprogrammierung 1
M Derby/JavaDB einen Null-Wert in die Datenbank schreiben Datenbankprogrammierung 7
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
T Wie kann FS einen extra Wert bekommen? Datenbankprogrammierung 1
A Postgres, sql: Inkrementierung allgemein und bis zu einem bestimmten Wert Datenbankprogrammierung 5
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
E Wert '0000-00-00 00:00:00' in Datenbank vorhanden Datenbankprogrammierung 41
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
M PL/SQL Fehler "Kein Wert zurückgegeben" Datenbankprogrammierung 4
C Wert in SQL-Abfrage zählen lassen Datenbankprogrammierung 8
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
I Tabelle mit "|" getrennten Werten -> einzelnen Wert davon abfragen Datenbankprogrammierung 15
M Ausgabe der Rows mit höchstem Wert X einer Gruppe y,z ? Datenbankprogrammierung 2
G HQL maximalen Wert Datenbankprogrammierung 2
F Wert des erzeugent Schlüssel ausgeben lassen Datenbankprogrammierung 2
turmaline Default sort Wert Datenbankprogrammierung 3
W MySQL Rückgabewert wenn Wert nicht in DA Datenbankprogrammierung 7
M MySQL MySQL Updat - updatet falschen wert Datenbankprogrammierung 3
S DB auf Wert überprüfen Datenbankprogrammierung 13
O eine Tabelle hat mehrere PrimKey mit dem selben Wert Datenbankprogrammierung 9
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
E Wert mit letztem Datetime bekommen Datenbankprogrammierung 2
raptorrs Wert zu Zelle hinzu addieren Datenbankprogrammierung 2
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
P jeden 20 Wert rausholen Datenbankprogrammierung 8
S SQL: Spalte kopieren plus Wert erhöhen Datenbankprogrammierung 4
E Wert in Tabelle nicht loeschen, sondern umbenennen? Datenbankprogrammierung 2
L oracle:ORA-01008: Nicht allen Variablen ist ein Wert zugeord Datenbankprogrammierung 1
P Wie übergebe ich einen NULL Wert in meinem Java-Programm? Datenbankprogrammierung 7
G ResultSet - Wert überprüfen Datenbankprogrammierung 6
V MAX Wert und weitere auslesen Datenbankprogrammierung 2
N Funktion um einen Wert in einem ResultSet zu finden ? Datenbankprogrammierung 5
R Einen Integer-Wert aus einer MySQL DB auslesen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben