查看api文档
public static Criterion sqlRestriction(String sql, Object value, Type type) Apply a constraint expressed in SQL, with the given JDBC parameter. Any occurrences of {alias} will be replaced by the table alias.
{alias}在输出的sql语句中为this,那么如何使用关联的其他表呢?
DetachedCriteria dc = collectDao.createDetachedCriteria();
dc.createAlias("requestUser", "user"); dc.createAlias("user.company", "cp"); dc.add(Restrictions.like("cp.name", "%" + cpName + "%"));
或者
dc.add(Restrictions.sqlRestriction("{alias}.title like ? escape'/'", StringUtil.escapeSQLLike(title), StringType.INSTANCE));
如上这样的写法是都是没有问题的。
但如何在Restrictions.sqlRestriction方法中使用cp.name呢?(因为要对特殊字符进行处理,所以此处要将Restrictions.like方法换为Restrictions.sqlRestriction)
尝试了{cp}.name,cp.name都行不通。
希望大神给解答