我在grails映射中有2个实体
产品和资产
我需要获取产品ID等于x且资产类型等于y
的资产我试过
json
但不起作用
独特的解决方案是
按ID加载产品并按产品加载查找
Asset.findByProductIdAndAssetType(productId, assetType)
有没有办法只使用productId加载资产?
答案 0 :(得分:6)
使用load
方法通过一次数据库调用来执行此操作:
Asset.findByProductAndAssetType(Product.load(productId), assetType)
load()
与get()
类似,因为它通过其id检索单个实例,但load()
只有在访问除id之外的任何持久属性后才会懒惰地检索实例。 get()
立即进行数据库查询并返回实例或null
如果未找到,但load()
总是返回非空代理,当它确实进行数据库查询时,它将填充其如果找到,则从检索到的数据中获取属性,否则抛出异常。
但是在上面的解决方案中,没有数据库调用Product
实例,因为检索Asset
所需要的只是用作外键的id。