我的应用程序具有与相册和单张照片具有相同逻辑关系的域类。List为关联使用 ahasMany应该支持单个专辑内的向后和向前移动,而无需显式管理位置字段或上一个/下一个指针。
例如:
class Album {
static hasMany = [photos: Photo]
List photos // Generates column `album_idx` in table for Photo.
Integer size // Memoized.
}
class Photo {
static belongsTo = [album: Album]
static hasOne = [content: PhotoData] // PhotoData has byte[] field for data
}
class Controller {
def prev() {
def prevIdx = idx==0 ? album.size - 1 : idx -1 // etc.
}
}
我可以在_idx没有本机 SQL 查询的情况下访问 的值吗?
我试过了photo.album.photos.indexOf(photo),但indexOf返回-1是因为加载显然太懒了indexOf,但总的来说我确实想要延迟加载。我责怪延迟加载,因为在调试器列表中的项目是随机填充的,我怀疑那些之前只是缓存的项目。我可能在这里误解了 GORM 的行为。
无论如何photo.album.photos.indexOf(photo),它比直接字段访问更丑陋并且(可能)更慢。理想情况下,我可以定义生成的_idx列和 中的字段之间的映射Photo,以允许使用photo.albumIdx.