Wie man richtig cast von string zu Zahl mit JPA2 Kriterien API?
Ich versuche eine Abfrage schreiben, mit Unterauswahl, wo ein string ist gegossen, um eine lange.
Wahrscheinlich bin ich etwas fehlt?
Abfrage sieht wie folgt aus:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Task> query = cb.createQuery(Task.class);
Root<Task> from = query.from(Task.class);
Subquery<Long> subquery = query.subquery(Long.class);
Root<EntityKeyword> fromKeyword = subquery.from(EntityKeyword.class);
subquery.select(fromKeyword.get(EntityKeyword_.relatedToId).as(Long.class));
subquery.where(cb.like(fromKeyword.get(EntityKeyword_.keyword), term));
query.where(cb.in(from.get(ModelEntity_.id)).value(subquery));
Wo EntityKeyword_.relatedToId ein String ist, erfordert cast zu Lang.
Aber zugrunde Ruhezustand schlägt fehl, mit der Ausnahme:
Last cause: No data type for node: org.hibernate.hql.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'cast' {originalText=cast}
\-[EXPR_LIST] SqlNode: 'exprList'
+-[DOT] DotNode: 'entitykeyw1_.keyword' {propertyName=keyword,dereferenceType=ALL,propertyPath=keyword,path=generatedAlias1.keyword,tableAlias=entitykeyw1_,className=l.i.s.m.s.EntityKeyword,classAlias=generatedAlias1}
| +-[ALIAS_REF] IdentNode: 'entitykeyw1_.id' {alias=generatedAlias1, className=l.i.s.m.s.EntityKeyword, tableAlias=entitykeyw1_}
| \-[IDENT] IdentNode: 'keyword' {originalText=keyword}
\-[IDENT] IdentNode: 'int8' {originalText=int8}
Keine Ahnung, was falsch ist. Jede Hilfe ist willkommen.
Ich bin mit Hibernate 3.6.8-Final
InformationsquelleAutor Martynas Jurkus | 2012-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Methode in Criteria API, die Konvertierung von String zu Lang.
Sie versuchen, verwenden Sie die Methode als in Ausdruck, um diese Umwandlung. Javadoc erklärt, warum Sie am Ende haben Zeitprobleme:
CriteriaBuilder hat Bündel von Methoden für die Umwandlung, aber auch keine Unterstützung für string -, numerischen Konvertierung.
InformationsquelleAutor Mikko Maunu
Unten Methode funktioniert für mich Typumwandlung String zu anderen Datentypen mit CriteriaBuilder
Zunächst Stand ich vor vielen Fehlern mit CriteriaBuilder und versucht die Kontrolle der DB-logs, um zu überprüfen die Abfrage immer ausgeführt. Dies half bei der Korrektur der HQL als erforderlich. Der obige Ansatz ist in Ordnung, die in PostgreSQL aber die Lösung variiert je nach Datenbank
InformationsquelleAutor Dinesh Chv
Einer Typumwandlung kann getan werden, indem die CriteriaBuilder obwohl.
Siehe Antwort von StackOverflow Frage 23728108
InformationsquelleAutor Ruifeng Ma