【发布时间】:2017-03-29 11:01:35
【问题描述】:
我有以下在 mysql 中完美运行的查询。
SELECT * FROM Orders as o, Products as p where o.productinfo RLIKE p.code;
在这里,我将两个表 Orders 和 Products 与 RLIKE 连接起来。
我正在尝试在 Hibernate 中实现相同的功能。
Query query = session.createQuery("FROM Orders as o, Products as p where o.productinfo RLIKE p.code");
List<Object[]> results = query.getResultList();
当我使用 RLIKE 时,在运行时会抛出以下错误。
{"errormessage":"org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: RLIKE
我尝试使用 LIKE 查询实现相同的功能,并将其与 '%p.code%' 匹配。
Query query = session.createQuery("FROM Orders as o, Products as p where o.productinfo LIKE '%p.code%'");
但它匹配字符串“p.code”而不是值。
HQL 中的 RLIKE 等价物是什么? 在 HQL 中使用 LIKE 连接两个表有不同的方法吗?
谢谢。
@YCF_L 的回答: 对于任何试图在 Hibernate (mysql) 中使用 like 运算符连接两个表的人都可以通过以下方式进行操作。
SELECT * FROM Orders as o, Products as p where o.productinfo LIKE CONCAT('%',p.code,'%');
【问题讨论】:
标签: java mysql hibernate hql rlike