【发布时间】:2013-03-02 07:46:39
【问题描述】:
我是 Hibernate 的新手,有没有办法可以将以下 MySQL 查询转换为 HQL 或 Criteria 查询:
SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'
如果没有,是否有任何解决方法可以使用 Hibernate 实现类似的功能?
【问题讨论】:
我是 Hibernate 的新手,有没有办法可以将以下 MySQL 查询转换为 HQL 或 Criteria 查询:
SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'
如果没有,是否有任何解决方法可以使用 Hibernate 实现类似的功能?
【问题讨论】:
来自mysql doc:
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%') ");
应该可以。
【讨论】:
您可以使用native SQL。在您的情况下,只需:
sess.createSQLQuery
("SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'").list();
【讨论】: