class File { 
   String name 
   File parent;     
   static belongsTo =[parent:File ]    
   static hasMany = [childrens:File];    
   static mapping = {    
      table 'Info_File' 
      id(generator:'sequence', params: [sequence: 'seq_file']) 
      parent:[lazy:"true",cascade:"none"]    
      children joinTable:[name:'children', key:'parent_Id', column:'Id',lazy:"true",inverse:"false",cascade:"none"]    
    }    
    static constraints = {    
        parent(nullable:true)    
    }    
} 

现在我想获取父id=1的所有文件 我该怎么做?

我尝试使用

def fileList = File.findAllByParent(File.get(1L)) 

但是它会发送2条sql,第一个是获取我不想要的父文件信息。

有没有类似File.findAllByParentId(1L)这样的方法

3x


谢谢。

parent{eq('key', 1)}  
//sql:from Info_File this_ left outer join Info_File parent_ali1_  
//on this_.parent_id=parent_ali1_.id where (parent_ali1_.id=?) 

但我不需要加入表。 所以我尝试一下

eq('parent.id',1L) 
//it's what i need: 
//from Info_File this_ where this_.parent_id=? 

请您参考如下方法:

我不认为你可以通过动态查找器来做到这一点,但你应该能够使用 Hibernate 来执行 createCriteria

File.createCriteria().list{ 
    parent{ 
        eq('key', 1) 
    } 
} 

也许这可能有帮助:https://docs.grails.org/4.0.1/ref/Domain%20Classes/createCriteria.html


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!