Java Hibernate:找不到命名参数

Java Hibernate:找不到命名参数,java,mysql,hibernate,servlets,jersey,Java,Mysql,Hibernate,Servlets,Jersey,在我的Hibernate代码中,我正在执行一个SQL命令。我有一个类似于的陈述。代码如下 public List<Object[]> searchProducts(String searchTerm, Session session) { Query query = session.createSQLQuery("SELECT product_request_advertisement.idproduct_request_advertisement,\n"

在我的Hibernate代码中,我正在执行一个SQL命令。我有一个类似于的陈述。代码如下

public List<Object[]> searchProducts(String searchTerm, Session session) {
        Query query = session.createSQLQuery("SELECT product_request_advertisement.idproduct_request_advertisement,\n"
                + "                product_request_advertisement.user_iduser,\n"
                + "                product_request_advertisement.product_idproduct,\n"
                + "                product_request_advertisement.product_units_idproduct_units,\n"
                + "                product_request_advertisement.type,\n"
                + "                product_request_advertisement.grade,\n"
                + "                product_request_advertisement.quantity,\n"
                + "                product_request_advertisement.expected_price,\n"
                + "                product_request_advertisement.required_place,\n"
                + "                product_request_advertisement.required_date,\n"
                + "                product_request_advertisement.extra_information,\n"
                + "                product_request_advertisement.expire_on,\n"
                + "                product_request_advertisement.delete_timestamp,\n"
                + "                product_request_advertisement.date_created,\n"
                + "                product_request_advertisement.last_updated,\n"
                + "                user.name,\n"
                + "                product_unit.unit_name\n"
                + "                FROM product_request_advertisement\n"
                + "                INNER JOIN user ON product_request_advertisement.user_iduser = user.iduser\n"
                + "                INNER JOIN product_unit ON product_unit.idproduct_unit = product_request_advertisement.product_units_idproduct_units\n"
                + "                INNER JOIN product ON product.idproduct = product_request_advertisement.product_idproduct\n"
                + "                WHERE product_request_advertisement.delete_timestamp is null\n"
                + "                AND product_request_advertisement.approved=true \n"
                + "                AND product_request_advertisement.type LIKE '% :searchTerm %' or product.product_name LIKE '% :searchTerm %' \n"
                + "                GROUP BY product_request_advertisement.idproduct_request_advertisement");

        System.out.println("DAO SEARCHTERM: " + searchTerm);
        query.setParameter("searchTerm", searchTerm);

        List<Object[]> list = query.list();
        return list;
    }

这可能是由于我在
LIKE
命令之间编写了
searchTerm
的方法不正确,但是我如何解决这个问题呢?

您应该使用这个
LIKE
表达式:

LIKE :searchTerm
然后按如下方式绑定:

query.setParameter("searchTerm", "%" + searchTerm "%");

也就是说,您绑定了一个字符串,这是绑定所需字符串后
LIKE
表达式应该是什么。谢谢!或者使用类似“%”的
:searchTerm | |‘%
(在某些方言中,
+
而不是
| |
)@Jason:这不是HQL,这是SQL。那么这是一个关于
的问题,比如
语句。错误是相同的,但可能由许多问题引起。所以不是重复的。@PeakGen可能是,但解决方案基本相同。
query.setParameter("searchTerm", "%" + searchTerm "%");