HQL: replace on elements()

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-12 01:54:43

问题


I have the following HQL-Query:

from Paperboy as paperboy where replace(replace(paperboy._mobile, ' ', ''), '/', '') = :nr or replace(replace(paperboy._phone, ' ', ''), '/', '') = :nr or :nr in elements(paperboy._additionalPhoneNumbers)

Now the problem is, that I also have to replace spaces and slashs in the _additionalPhoneNumbers. Is this possible via HQL?

I tried things like

from Paperboy as paperboy where replace(replace(paperboy._mobile, ' ', ''), '/', '') = :nr or replace(replace(paperboy._phone, ' ', ''), '/', '') = :nr or :nr in elements(replace(replace(paperboy._additionalPhoneNumbers, ' ', ''), '/', ''))

but this throws an exception. Mapping of Paperboy is like this:

<class name="Paperboy"
     table="tblPaperboy"
     lazy="false">
   <id name="_key"
    column="Id"
    access="field" >
      <generator class="assigned"/>
   </id>
   <property name ="_businessId" column="BusinessId" access="field" />
   <many-to-one name="_agency" class="Agency" access="field" column="AgencyKey" />
   <property name ="_lastname" column="Lastname" access ="field" />
   <property name ="_firstname" column="Firstname" access ="field" />
   <property name ="_phone" column="Phone" access ="field" />
   <property name ="_mobile" column="Mobile" access ="field" />

   <bag name="_additionalPhoneNumbers"
     access="field"
     fetch="subselect"
     lazy="false"
     table="tblPaperboyAdditionalPhoneNumbers">
     <key column="PaperboyId"/>
     <element column="PhoneNumber"
           type="string"/>
   </bag>
</class>

回答1:


this might work

select
  paperboy
from
  Paperboy as paperboy left join paperboy._additionalPhoneNumbers number
where
  replace(replace(paperboy._mobile, ' ', ''), '/', '') = :nr or
  replace(replace(paperboy._phone, ' ', ''), '/', '') = :nr or
  replace(replace(number, ' ', ''), '/', '') = :nr


来源:https://stackoverflow.com/questions/27979402/hql-replace-on-elements

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!