我对Hibernate很新,有没有办法可以将以下MySQL查询转换为HQL或Criteria查询:
SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'
如果没有,是否有任何变通方法可以使用Hibernate实现类似的功能?
答案 0 :(得分:5)
来自mysql doc:
expr1 SOUNDS LIKE expr2
这与SOUNDEX(expr1)= SOUNDEX(expr2)
相同
MySQLDialect似乎支持soundex
。所以做这样的事情:
SELECT * FROM items WHERE soundex(itemname) = soundex('some name')
或在HQL中
Query q = session.createQuery
("from items e where soundex(e.itemname) = soundex('%some name%') ");
应该有用。
答案 1 :(得分:4)
您可以使用native SQL。在您的情况下,只需:
sess.createSQLQuery
("SELECT * FROM items WHERE itemname SOUNDS LIKE 'some name'").list();