【发布时间】:2010-10-22 09:30:42
【问题描述】:
我正在尝试找出使用 Grails GORM 执行某种类型查询的最有效/最有效的方法。
这是我想以多对一关系查询所有子项/链接项的场景。这是一种单向关系,多方使用它所链接的事物的 id。
一个例子是一个学年和该学年的学期之间的关系。在学期表中,表中存储了学期所属学年的id。然而,学年没有任何东西可以链接到属于它的学期。这样做是为了保持学期数的灵活性。我希望做的是使用 HQL 之类的东西来检索所有拥有相同学年的学期。在常规 SQL 中,我们可以使用学期表的学年 id 列过滤行。在 HQL 中,它并不那么简单。学年 ID 不可用作域类的属性。相反,Hibernate 只是使用它来加载实际的学年对象。
在这种情况下应该像下面这样工作吗?
select from Semester as s where s.year.id = ?
在这种情况下,保存学年的学期域类的属性称为年。该查询使用 year 属性和那一年的 id 并使用它来过滤学期。
这只是一个例子,但我正在开发的系统包含不止一个类似的安排,需要加载一组具有相同链接域对象的域对象。
可能有一种更有效/更有效的方法来做到这一点。一个示例是从域类中获取实际的学年 id 值。然而,这意味着同一列映射到域类的多个属性。这可能不是必需的,但它是解决此类问题的另一种可能方式。
有一些 Hibernate 经验,但是当您想做更多不寻常的事情时,一些问题在 Hibernate 中会变得复杂。
【问题讨论】:
标签: hibernate grails hql grails-orm