给出一个单词列表和一个水果类,让我们说:
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 ???
答案 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和数据库特定的语法来执行查询。