java - Hibernate 替换字符串条件

标签 java oracle hibernate jpa orm

我在创建查询时遇到了一些麻烦,其中必要条件是在我需要替换特殊字符的字段中使用 like。像这样:

public List<MyClass> search(Myclass object){

Criteria cri = criteria(MyClass.class);
if(object.getName() != null){
    cri.add(Restrictions.sqlRestriction("replace("+cri.getAlias()+".name,"+object.getSpecialCharacter()+", '') like '"+object.getName()+"'"));  
}
if(dominio.getType()!= null){
    cri.add(Restrictions.eq("type", object.getType()));
}
if(dominio.getWorkspace() != null){
    cri.add(Restrictions.eq("workspace", object.getWorkspace()));
}
if(dominio.getStatus() != null){
cri.add(Restrictions.eq("status", object.getStatus()));
}

return cri.list();

}

使用这段代码我得到了以下错误:

this_.ID_MYCLASS as ID_MYCLASS1_33_0_,
this_.NM_MYCLASS as NM_MYCLASS4_33_0_,
this_.ID_STATUS as ID_STATU5_33_0_,
this_.ID_TYPE as ID_TYPE_7_33_0_,
this_.ID_WORKSPACE as ID_WORKS8_33_0_ 
from KDTB_MYCLASS this_ 
where replace(this.name,'_', '') like 'COD' 
and this_.ID_WORKSPACE=?

ORA-00904: "THIS"."NAME": 无效标识符

我做错了什么?

提前致谢!

最佳答案

试试这个:

cri.add(Restrictions.sqlRestriction("replace({alias}.name,"+object.getSpecialCharacter()+", '') like '"+object.getName()+"'"));

关于java - Hibernate 替换字符串条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440820/

相关文章:

java - 注册匿名类功能

java - oracle tomcat-jdbc 池连接总是使用相同的 session

java - 将 PostgreSQL Query 转换为对应的 Hibernate Query

sql - 如何处理 SQL 中的引号 '

java - Weblogic 10.0.0 禁用包装数据类型

java - hibernate :Cannot add or update a child row: a foreign key constraint fails

java - hibernate:如果父层是新的,则不会将更新级联到子层

java - Java/Python 中的自动文本反馈分析

java - 如何解决对话流身份验证问题

java - 如何使用JAVA异步执行存储过程