Add concat() function support to SAPDBDialect

Description

I use the following query:

Query query = session.createQuery("select concat(p.nname,p.vname) " +
"from FHPerson p where p.bereich.id = :bId " +
"and p.aktiv = '1' order by p.nname, p.vname asc");

String concatenation does not work, no SQL can be generated. The same error occurs with using || instead of concat(). Does anybody know what might be the cause of the problem? Stack Trace and other info below. (I posted already in the user forum, but no reply)

Without Hibernate, using SQL Studio, the "same" statement works fine:
select concat(p.nname,p.vname) from FHPerson p where p.bereich = 1 and p.aktiv = '1' order by p.nname, p.vname asc

------------------------------------------------------------ Full stack trace of any exception that occurs:
------------------------------------------------------------ java.rmi.ServerException: RuntimeException; nested exception is:
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.MethodNode
-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'concat' {originalText=concat}
-[EXPR_LIST] SqlNode: 'exprList'
+-[DOT] DotNode: 'fhperson0_.nname' {propertyName=nname,dereferenceType=4,propertyPath=nname,path=p.nname,tableAlias=fhperson0_,className=de.fhzw.portal.umfragesystem.model.persistence.domainmodel.fhinfo.FHPerson,classAlias=p}

+-[ALIAS_REF] IdentNode: 'fhperson0_.PID' {alias=p, className=de.fhzw.portal.umfragesystem.model.persistence.domainmodel.fhinfo.FHPerson, tableAlias=fhperson0_}

-[IDENT] IdentNode: 'nname' {originalText=nname}

-[DOT] DotNode: 'fhperson0_.vname' {propertyName=vname,dereferenceType=4,propertyPath=vname,path=p.vname,tableAlias=fhperson0_,className=de.fhzw.portal.umfragesystem.model.persistence.domainmodel.fhinfo.FHPerson,classAlias=p}
+-[ALIAS_REF] IdentNode: 'fhperson0_.PID' {alias=p, className=de.fhzw.portal.umfragesystem.model.persistence.domainmodel.fhinfo.FHPerson, tableAlias=fhperson0_}
-[IDENT] IdentNode: 'vname' {originalText=vname}

at org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:386)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:196)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
at org.jboss.ejb.Container.invoke(Container.java:870)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:144)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:155)
at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:104)
at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:115)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:101)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:97)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:91)
at $Proxy67.executeCommand(Unknown Source)
at de.fhzw.portal.umfragesystem.view.backing.management.ChooseAuswBerechtigteBacking.createMitarbeiterList(ChooseAuswBerechtigteBacking.java:108)
at de.fhzw.portal.umfragesystem.view.backing.management.ChooseAuswBerechtigteBacking.prepareCreateForm(ChooseAuswBerechtigteBacking.java:90)
at de.fhzw.portal.umfragesystem.view.backing.management.CreateEditUmfrageBacking.chooseAuswBerechtigte(CreateEditUmfrageBacking.java:792)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
at javax.faces.component.UICommand.broadcast(UICommand.java:106)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:90)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:132)
at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues(LifecycleImpl.java:200)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:71)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:150)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:54)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)

------------------------------------------------------------ Mapping documents:
------------------------------------------------------------ <?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping
package="de.fhzw.portal.umfragesystem.model.persistence.domainmodel.fhinfo">

<class name="FHPerson" lazy="true" mutable="false">

<id name="id" column="PID" />

<property name="titel" />
<property name="nname" />
<property name="vname" />
<property name="dz" />
<property name="email" />
<property name="telnr" />
<property name="faxnr" />
<property name="raum" />
<property name="sprechstunde" />
<property name="homepage" />
<property name="last_update" />
<property name="last_user" />
<property name="telnr2" />
<property name="aktiv" />
<property name="tk_update" />
<property name="inserted" />
<property name="extern" />
<property name="sonstiges" />
<property name="rzname" />

<many-to-one name="bereich" />
<many-to-one name="fachbereich" />

</class>

</hibernate-mapping>

Environment

3.1rc3 , MaxDB 7.5

Assignee

Steve Ebersole

Reporter

Matthias Kahlau

Fix versions

Labels

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Minor
Configure