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

Schreibe einen Kommentar