【发布时间】:2013-09-02 16:10:41
【问题描述】:
我的应用程序具有与相册和个人照片具有相同逻辑关系的域类。为 hasMany 关联使用 List 应该支持单个专辑内的向后和向前移动,而无需显式管理位置字段或上一个/下一个指针。
例如:
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.
}
}
我可以在没有本机 SQL 查询的情况下访问 _idx 的值吗?
我尝试过photo.album.photos.indexOf(photo),但indexOf 返回-1,因为对于indexOf,加载显然太懒了,尽管总的来说我确实想要延迟加载。我责怪延迟加载,因为在调试器列表中的项目是随机填充的,我怀疑那些之前只是简单地缓存的项目。我可能在这里误解了 GORM 的行为。
无论如何,photo.album.photos.indexOf(photo) 比直接访问字段更丑(可能)更慢。理想情况下,我可以定义生成的_idx 列和Photo 中的字段之间的映射,以允许使用photo.albumIdx 进行访问。
【问题讨论】:
-
如果您执行
b.a.bees.indexOf(b),您会得到什么错误?为什么要查找索引? -
@dmahapatro 我稍微改变了整个问题,希望现在更加明确/清晰。顺便说一句,感谢您之前的编辑。
-
我最近需要获取该索引 - 最终明确放置了一个索引列。管理它根本不需要太多工作。
标签: hibernate grails grails-orm