如何在Ebean中使用soundex函数

时间:2015-12-17 13:10:36

标签: playframework-2.0 ebean fuzzy-search

是否有任何与数据库无关的方法可以使用ebean(或任何其他ORM API)调用soundex或类似函数进行模糊搜索?

1 个答案:

答案 0 :(得分:0)

Postges,MySql,Oracle,H2,SQL Server中有一个soundex()数据库函数,因此它可以成为数据库不可知支持的理想选择。

使用Ebean ORM,您现在可以通过以下方式使用它:

String soundexArg = "Jones";

List<Customer> customers = ebeanServer.find(Customer.class)
.where().raw("soundex(lastName) = soundex(?)",soundexArg)
.findList();

// Note that lastName is detected as a property name and 
// translated into db alias and column as expected

您也可以将raw()与Ebean的类型安全“查询bean”一起使用,但在这种情况下,将soundex添加为String属性类型的完全支持的表达式会更好,可以像以下一样使用:

String soundexArg = "Jones";

List<Customer> customers = new QCustomer()
 .lastName.soundex(soundexArg)
 .findList();

这假设转换为SQL谓词:soundex(lastName)= soundex(?)。