Playframework 2.0 如何在Ebean中使用soundex函数

Playframework 2.0 如何在Ebean中使用soundex函数,playframework-2.0,ebean,fuzzy-search,Playframework 2.0,Ebean,Fuzzy Search,是否有任何与数据库无关的方法来调用soundex或类似的函数,以便使用ebean(或任何其他ORM API)进行模糊搜索?Postges、MySql、Oracle、H2、SQL Server中有一个soundex()DB函数,因此它是数据库无关支持的一个很好的候选者 使用Ebean ORM,您可以通过以下方式立即使用它: String soundexArg = "Jones"; List<Customer> customers = ebeanServer.find(Customer

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

Postges、MySql、Oracle、H2、SQL Server中有一个soundex()DB函数,因此它是数据库无关支持的一个很好的候选者

使用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
String soundexArg=“Jones”;
List customers=ebeanServer.find(Customer.class)
.where().raw(“soundex(lastName)=soundex(?”,soundexArg)
.findList();
//请注意,lastName被检测为属性名,并且
//按预期转换为db别名和列
您也可以将raw()与Ebean的类型安全的“查询bean”一起使用,但在这种情况下,最好将soundex添加为字符串属性类型上完全支持的表达式,可以使用如下类型:

String soundexArg = "Jones";

List<Customer> customers = new QCustomer()
 .lastName.soundex(soundexArg)
 .findList();
String soundexArg=“Jones”;
列出客户=新的QCCustomer()
.lastName.soundex(soundexArg)
.findList();

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

看看jOOQ——我放弃了Ebean,支持它,它工作得很好。有关您的具体问题,请参阅