假设我有以下课程:
abstract class Fruit {
String name
static mapping = {
discriminator column: 'type'
}
class Banana extends Fruit {
static mapping = {
discriminator: 'Banana'
}
}
class Apple extends Fruit {
static mapping = {
discriminator: 'Apple'
}
}
我需要实现一个搜索算法,这样,给定一个JSON字符串,我可以在DB中找到一个特定的Fruit实例。例如:
{
"type": "Apple"
"name": "Green"
}
或
{
"type": "Banana"
"name": "Green"
}
问题是,水果可以有相同的名称,所以如果我只是搜索一下:
Fruit.getByName('Green')
可能会返回Apple
或Banana
。我需要能够根据类型对其进行过滤,例如:
Fruit.getByNameAndType('Green', 'Apple')
如何在Grails中执行此操作?
答案 0 :(得分:2)
查看生成的数据库。
您可以在Fruit类的条件搜索中使用class
列。
也许这可以作为
Fruit.findAllByColorAndClassLike('Green','%Apple')
太
答案 1 :(得分:0)
Apple.getByName('Green')
应该有效。你试过了吗?
答案 2 :(得分:0)
这是否符合您的需求?
def fruits = Fruit.findAll("from Fruit where type = :type and name = :name", [type: "Apple", name: "Green"])