3

我对 Hibernate 很陌生,有没有办法可以将以下 MySQL 查询转换为 HQL 或 Criteria 查询:

SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'

如果没有,是否有任何解决方法可以使用 Hibernate 实现类似的功能?

4

2 回答 2

5

来自mysql 文档

expr1 听起来像 expr2

这与 SOUNDEX(expr1) = SOUNDEX(expr2) 相同

并且soundex似乎受MySQLDialect支持。所以做这样的事情:

SELECT * FROM items WHERE soundex(itemname) = soundex('some name')

或在 HQL 中

Query q = session.createQuery
   ("from items  e where soundex(e.itemname)  =  soundex('%some name%') ");

应该管用。

于 2013-03-02T08:05:09.657 回答
4

您可以使用本机 SQL。在您的情况下,只需:

sess.createSQLQuery
    ("SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'").list();
于 2013-03-02T07:58:37.493 回答