2009-11-14 4 views
0

я пишу этот код в одной переменной в IReportIReport Дело в переменной

$F{wbsWbkRef.wbkStdRef.stdBlRtntp.blCode} != null ? 
ReportUtil.getFirstEntity($P{JPA_ENTITY_MANAGER}, 
"SELECT "+ 
"CASE WHEN std.stdBlRtntp.blCode IN ('UNIVGRANT' , 'BEHYAR','TEACHER','GRANTED','EXTGRANTED','EXTGRANTED') THEN "+ 
"DECODE (std.stdBlAcctp.blCode , 'UNIVGRANT' ,'داخل','BEHYAR','داخل','TEACHER','داخل','GRANTED','داخل','EXTGRANTED','خارج','EXTGRANTED','ترددي','غير بورس')  "+ 
"END AS SCHOLARSHIPTITLE "+ 
"FROM Student std "+ 
"WHERE std.stdId=:stdId ", 
"stdId="+ $F{wbsWbkRef.wbkStdRef.stdId}, 
"stdId=java.math.BigDecimal") 
: null 

, но я получаю эту ошибку

Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.CaseNode 
\-[CASE] CaseNode: 'CASE' 
    \-[WHEN] SqlNode: 'WHEN' 
     +-[IN] InLogicOperatorNode: 'in' 
     | +-[DOT] DotNode: 'blookup1_.BL_CODE' {propertyName=blCode,dereferenceType=4,propertyPath=blCode,path=std.stdBlRtntp.blCode,tableA 
p1_,className=com.ito.lms.persistence.BLookup,classAlias=null} 
     | | +-[DOT] DotNode: 'student0_.STD_BL_RTNTP' {propertyName=stdBlRtntp,dereferenceType=1,propertyPath=stdBlRtntp,path=std.stdBlRtn 
as=blookup1_,className=com.ito.lms.persistence.BLookup,classAlias=null} 
     | | | +-[ALIAS_REF] IdentNode: 'student0_.STD_ID' {alias=std, className=com.ito.lms.persistence.Student, tableAlias=student0_} 
     | | | \-[IDENT] IdentNode: 'stdBlRtntp' {originalText=stdBlRtntp} 
     | | \-[IDENT] IdentNode: 'blCode' {originalText=blCode} 
     | \-[IN_LIST] SqlNode: 'inList' 
     |  +-[QUOTED_STRING] LiteralNode: ''UNIVGRANT'' 
     |  +-[QUOTED_STRING] LiteralNode: ''BEHYAR'' 
     |  +-[QUOTED_STRING] LiteralNode: ''TEACHER'' 
     |  +-[QUOTED_STRING] LiteralNode: ''GRANTED'' 
     |  +-[QUOTED_STRING] LiteralNode: ''EXTGRANTED'' 
     |  \-[QUOTED_STRING] LiteralNode: ''EXTGRANTED'' 
     \-[METHOD_CALL] MethodNode: '(' 
      +-[METHOD_NAME] IdentNode: 'DECODE' {originalText=DECODE} 
      \-[EXPR_LIST] SqlNode: 'exprList' 
      +-[DOT] DotNode: 'blookup2_.BL_CODE' {propertyName=blCode,dereferenceType=4,propertyPath=blCode,path=std.stdBlAcctp.blCode,tab 
okup2_,className=com.ito.lms.persistence.BLookup,classAlias=null} 
      | +-[DOT] DotNode: 'student0_.STD_BL_ACCTP' {propertyName=stdBlAcctp,dereferenceType=1,propertyPath=stdBlAcctp,path=std.stdBl 
Alias=blookup2_,className=com.ito.lms.persistence.BLookup,classAlias=null} 
      | | +-[ALIAS_REF] IdentNode: 'student0_.STD_ID' {alias=std, className=com.ito.lms.persistence.Student, tableAlias=student0_} 
      | | \-[IDENT] IdentNode: 'stdBlAcctp' {originalText=stdBlAcctp} 
      | \-[IDENT] IdentNode: 'blCode' {originalText=blCode} 
      +-[QUOTED_STRING] LiteralNode: ''UNIVGRANT'' 
      +-[QUOTED_STRING] LiteralNode: ''\u62f\u627\u62e\u644'' 
      +-[QUOTED_STRING] LiteralNode: ''BEHYAR'' 
      +-[QUOTED_STRING] LiteralNode: ''\u62f\u627\u62e\u644'' 
      +-[QUOTED_STRING] LiteralNode: ''TEACHER'' 
      +-[QUOTED_STRING] LiteralNode: ''\u62f\u627\u62e\u644'' 
      +-[QUOTED_STRING] LiteralNode: ''GRANTED'' 
      +-[QUOTED_STRING] LiteralNode: ''\u62f\u627\u62e\u644'' 
      +-[QUOTED_STRING] LiteralNode: ''EXTGRANTED'' 
      +-[QUOTED_STRING] LiteralNode: ''\u62e\u627\u631\u62c'' 
      +-[QUOTED_STRING] LiteralNode: ''EXTGRANTED'' 
      +-[QUOTED_STRING] LiteralNode: ''\u62a\u631\u62f\u62f\u64a'' 
      \-[QUOTED_STRING] LiteralNode: ''\u63a\u64a\u631 \u628\u648\u631\u633'' 

ответ

0

Ничего плохого с самого кода Java, но его не очень хорошая практика также. Проблема заключается либо в имени Entity, которое принимает Hibernate, путь к классам этого объекта, так и в сопоставлении объекта с таблицей.

Start, проверив значение этого параметра, $P{JPA_ENTITY_MANAGER}

следующий раз, я хотел бы предложить, чтобы поставить бизнес + логику в серверной, и иметь дело с докладом в презентации, просто отправить его готовые параметры. Это поможет вам много времени, когда вы будете поддерживать или изменять отчет позже.

Смежные вопросы