是否有任何与数据库无关的方法可以使用ebean(或任何其他ORM API)调用soundex
或类似函数进行模糊搜索?
答案 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(?)。