我使用TypedQuery<NewsContentBaseInfo>
构建并执行了一个动态查询,其中一个字段是CLOB object - news.stores
。这是我得到的错误,我找不到如何解决这个问题的信息:
java.sql.SQLException: ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion
下面是查询:
SELECT DISTINCT new com.kaufland.newsletter.usecase.newscontent.search.dto.response.NewsContentBaseInfo(news.id, news.uuid, news.dayAndTimeOfPublish, news.title, news.subtitle, news.categoryCountry, news.newsPeriod, to_char(news.stores))
FROM com.kaufland.newsletter.domain.content.AbstractNewsContent news
LEFT OUTER JOIN news.newsLinks newsLinks
WHERE news.country = :country AND news.status = :status
AND news.dayAndTimeOfPublish >= :dayAndTimeOfPublishStart
AND news.dayAndTimeOfPublish <= :dayAndTimeOfPublishEnd
AND (news.stores LIKE '%'||:storeNumber0||'%')
AND news.categoryCountry.id in :includeCategoryIds
AND (LOWER(news.title) LIKE LOWER('%'||:searchText||'%')
OR LOWER(news.subtitle) LIKE LOWER('%'||:searchText||'%')
OR LOWER(news.text1) LIKE LOWER('%'||:searchTextEscaped||'%')
OR LOWER(news.text2) LIKE LOWER('%'||:searchTextEscaped||'%')
OR LOWER(news.text3) LIKE LOWER('%'||:searchTextEscaped||'%')
OR LOWER(newsLinks.displayText) LIKE LOWER('%'||:searchText||'%'))
ORDER BY news.dayAndTimeOfPublish DESC
发布于 2020-02-20 22:15:11
to_char
函数返回限制为4000个字符的可变字符。如果CLOB大于该值,则会出现此错误(取决于Oracle版本)。
如果确实需要字符串值,可以尝试使用dbms_lob包(https://docs.oracle.com/database/121/ARPLS/d_lob.htm#ARPLS600),它可以处理更多字符。
https://stackoverflow.com/questions/60321341
复制相似问题