【问题标题】:Hibernate filter not working with parent domain休眠过滤器不适用于父域
【发布时间】:2015-10-28 08:39:01
【问题描述】:

我在父子结构中有两个域。

第一个是:-

class Client {

    String xyz
    static belongsTo = [site: Site]

 static hibernateFilters = {
        siteFilter(condition: ':siteId = site_id', types: 'long')
    }
}

第二个是。

class TicketDetail {

    Date date
    Client client
}

如果我直接访问客户端域。

Client.searchByAlphabet(params).list(params)

休眠过滤器工作正常。但是当我在 TicketDetail 上使用标准时。

 client {
         site {
               eq('id', currentSiteId)
              }
        }
projections {
                distinct 'client'
            }

然后客户端域上的休眠过滤器不起作用。从父域访问子域时如何激活休眠过滤器。

【问题讨论】:

    标签: hibernate grails grails-orm grails-domain-class hibernate-filters


    【解决方案1】:

    使用 createAlias... 例如

    class Customer {
       String name
       Account account
       BigDecimal minAccountBalance
       ...
    }
    
    class Account {
       BigDecimal currentBalance
       ...
    }
    
    Customer.createCriteria().list(){
          createAlias('account', 'acc')
          gtProperty('acc.currentBalance', 'minAccountBalance')
        }
    

    【讨论】:

    • 我没有收到任何错误,但我的 hibernateFilters 不起作用。我得到所有记录。但根据过滤器,它应该只返回所选站点 ID 的记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多