为Ebean

时间:2016-12-26 06:50:15

标签: playframework orm ebean

给出一个单词列表和一个水果类,让我们说:

List<String> wordList = new ArrayList<String>(Arrays.asList("App", "banan", "mang", "kiwi"));

LIKE会像这样,但一次只有一个,这与IN不相符:

Fruits.find.where().like('name', wordList.get(0)).findList();

IN会像这样:

List<Fruit> matchedFruitList = Fruit.find.where().in("name", wordList).findList();

现在我需要的是结合IN操作进行LIKE操作。

有没有办法用Ebean ORM ???

1 个答案:

答案 0 :(得分:2)

您似乎需要使用sequel -C sqlite://tweets.db postgres://pgusername:pgpassword@localhost/pgdatabasename 条件并为每个单词执行LIKE。

OR

ExpressionList<Fruit> scope = Fruit.find.where(); for (int i = 0; i < wordList.size(); i++) { scope = scope.or().like("name", "%" + wordList.get(i) + "%"); } List<Fruit> matchedFruitList = scope.findList(); 不是很大时很好。如果是,我认为您应该使用RawSql和数据库特定的语法来执行查询。