在另一个实体中通过id查找grails GORM

时间:2018-02-16 22:44:46

标签: grails gorm

我在grails映射中有2个实体

产品和资产

我需要获取产品ID等于x且资产类型等于y

的资产

我试过

json

但不起作用

独特的解决方案是

按ID加载产品并按产品加载查找

Asset.findByProductIdAndAssetType(productId, assetType) 

有没有办法只使用productId加载资产?

1 个答案:

答案 0 :(得分:6)

使用load方法通过一次数据库调用来执行此操作:

Asset.findByProductAndAssetType(Product.load(productId), assetType)

load()get()类似,因为它通过其id检索单个实例,但load()只有在访问除id之外的任何持久属性后才会懒惰地检索实例。 get()立即进行数据库查询并返回实例或null如果未找到,但load()总是返回非空代理,当它确实进行数据库查询时,它将填充其如果找到,则从检索到的数据中获取属性,否则抛出异常。

但是在上面的解决方案中,没有数据库调用Product实例,因为检索Asset所需要的只是用作外键的id。