【问题标题】:Grails GORM - return count of objects who's array property > 0Grails GORM - 返回数组属性> 0的对象计数
【发布时间】:2018-06-17 09:39:02
【问题描述】:

考虑以下事项;

class Person {
    int id
    String name

    static hasMany = [cars : Car]
}

class Car {
   int id
   String brand

   static belongsTo = Person
   static hasMany = [owners: Person]
}

以上将产生一个person_cars 连接表。我只想找出该表中是否有任何条目,用文字表示;

目前是否存在任何拥有汽车的人。

乐于使用任何可用的机制(查找器/标准/HQL 等)

【问题讨论】:

    标签: database grails hql grails-orm hibernate-criteria


    【解决方案1】:

    我的意见是添加 PersonCar 实体更好。

    对于您的问题:

    Car.count() > 0
    

    由于 car 属于 Person,所以不能是 car 的任何副本而不添加到 person。 如果 person 可以为空,您可以使用:

    Car.countByPersonIsNotNull()
    

    认为如果汽车有人,那么该表中就会有一个值。

    【讨论】:

    • 我认为您的解决方案会起作用,但不幸的是,当我测试它时它不起作用。我返回了数据库中存在的任何数量的汽车的计数。如果绝对必要,我会添加 PersonCar,但希望我能找到一种方法来实现这个单一的要求,而不需要它。
    • 如果您收到 Car 表示您在 person_cars 中有数据
    【解决方案2】:

    知道了!比我想象的要简单得多。

     Person.createCriteria().count {
       owners {
         count
       }
     }
    

    这有效地为我提供了 person_cars 记录的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2020-01-04
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多