变量中的 IReport 案例

发布于 2024-08-11 00:36:26 字数 3631 浏览 4 评论 0原文

我在 IReport 的一个变量中编写此代码

 $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''

I write this code in one variable in the IReport

 $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

but I get this error

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''

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼角的笑意。 2024-08-18 00:36:26

Java 代码本身并没有什么问题,但这也不是一个好的做法。
问题要么是 Hibernate 接收的实体名称、该实体的类路径,要么是实体到表的映射。

首先检查这个参数的值, $P{JPA_ENTITY_MANAGER}

下次,我建议将业务+逻辑放在后端,并将报告作为Presentation处理,只需发送准备好的参数即可。这对您以后维护或修改报表时会有很大帮助。

Nothing wrong with the Java code itself, but its not a good practice as well.
The problem is either the Entity name the Hibernate is receiving, the classpath of this entity or the mapping of the entity to the table.

Start by checking the value of this parameter, $P{JPA_ENTITY_MANAGER}

Next times, i would suggest to put the business+logic in the backend, and deal with the report as Presentation, just send it ready parameters. That will help you a lot when maintaining or modifying the report later.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文