我的应用程序具有与相册和单张照片具有相同逻辑关系的域类。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
.