2016-12-17 50 views
1
class Animal{ ... } 
class Tiger extends Animal { ... } 
class Deer extends Animal { ... } 

現在我想有一個namedQuery作爲Grails中GORM使用域繼承,是可以通過查詢超一流找到具體的子類的實例

class Animal { 
     ... 
    static namedQueries = { 
     findAllAnimalBySpecies{ 
     ... some logic for fetch only Tiger 
     ... some logic for fetch only Deer 
     } 
    } 
} 

在控制器,

def tigers = Animal.findAllAnimalBySpecies().list() 

如何通過查詢動物來獲取「老虎」?或者我錯過了正確的概念。

回答

1

這給一試:

class Animal { 
    ... 
    static namedQueries = { 
     findAllAnimalBySpecies { species -> 
      switch(species) { 
       case 'tiger': 
        Tiger.all 
        break 
       case 'lion': 
        Lion.all 
        break 
       ... 
      } 
     } 
    } 
} 

然後:def tigers = Animal.findAllAnimalBySpecies('tiger').list()

相關問題