`
flashing
  • 浏览: 355075 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

grails多对一关联查询的路径问题

 
阅读更多

比较悲催的调了一晚上,因为以前没在grails里面这么写过,所以不知道这算是个bug还是hibernate的查询dsl就是这么设计的。

两个类:
class Asset {
    static hasMany = [stocks : AssetStock]
    String name
}

class AssetStock {
    static belongsTo = Asset
    Asset asset
    Date purchageDate
}

现在从One to many的many端进行查询
def results, total
def c = AssetStock.createCriteria()
  results = c.list(max: 100, offset: 0) {
  eq "asset.name", "打印机"
}


提示说找不到asset.name这个属性,调了一晚上也没搞定。

早上尝试做了点修改让这个代码好用了
def results, total
def c = AssetStock.createCriteria()
results = c.list(max: 100, offset: 0) {
    createAlias("asset", "asset")
    eq "asset.name", "打印机"
}

即必须createAlias给Path做路径关联,如果你有多个关联对象,那么都需要起alias。
但是有一种情况不用alias,即查询关联对象的主键ID的时候,可以这么写

results = c.list(max: 100, offset: 0) {
    eq "asset.id", 1L
}

这也是文档里面的类似例子,完全是个误导。

 

顺便附个链接,是讲怎么从one的一端进行查询many的属性的:

http://johnrellis.blogspot.com/2010/05/relationship-advice-grails-one-to-many.html

重点是listDistinct和createAlias,否则会重复。

 

 

1
1
分享到:
评论

相关推荐

    Grails基础教程.pdf

    - **多对多关系**:处理多个实体之间的复杂关联。 - **自关联关系**:一个实体与自身之间的关联。 #### 六、让模型开始工作 **6.1 通过脚手架迅速创建用户界面** - **Hubbub的领域类脚手架**:使用Grails自带的...

    eclipse下的开发Grails项目的环境配置与项目部署

    在Eclipse中开发Grails项目是一项技术性较强的工作,涉及到多个步骤和配置。Grails是一个基于Groovy语言的开源Web应用框架,它简化了Java开发流程。以下将详细阐述如何在Eclipse环境下配置Grails项目并进行调试。 ...

    GRAILS课程学习记录总结

    在 Grails 中,每个组件都有其特定的位置,这种结构使得即使初学者也能快速上手,并将更多精力集中在解决业务问题上,而不是框架本身的配置和集成。 Grails 的学习过程通常通过实例驱动,展示如何快速构建一个功能...

    grails-web-url-mappings-2.5.4.zip

    URL映射是Grails MVC模式中的一部分,负责将URL路径转换为控制器动作,从而实现URL与业务逻辑的直观关联。在Grails 2.5.4中,这一功能被封装在`grails-web-url-mappings`模块中。 首先,URL映射的配置文件通常位于`...

    groovy and grails ppt

    GORM还支持不同类型的关联,如一对一(One-to-one)、一对多(One-to-many)和多对多(Many-to-many)关系,允许在领域模型之间建立复杂的关系。 在并发控制方面,Groovy和Grails提供了乐观锁和悲观锁的概念。乐观...

    Grails Persistence with GORM and GSQL

    - **自定义关联链接**:提供了自定义一对多和多对多关联的方式。 - **自定义关联获取策略**:讨论了如何优化关联对象的加载策略,以提高性能。 - **二级缓存**:介绍了GORM中的二级缓存机制,以及如何配置和使用...

    The Grails Framework - Reference Documentation

    - **关联关系**:包括一对一、一对多、多对多等多种类型。 - **一对一关联**:通过`belongsTo`或`hasOne`属性实现。 - **一对多关联**:使用`hasMany`属性。 - **多对多关联**:通常通过中间表实现。 - **集合...

    SOA 与 Grails

    1. **REST 支持**:Grails 是一个基于 Groovy 的全栈 Web 开发框架,它对 RESTful Web 服务提供了全面的支持。这意味着开发者可以轻松创建符合 REST 风格的服务接口,包括支持 HTTP 请求的所有方法。 2. **URL 映射*...

    java文集

    正则表达式 lucene索引合并 探查Weblogic JDBC Multipool 问题 struts通用Exception处理 Grails中默认数据库HSQLDB点滴 从request获取各种路径总结 DIV实现的表格自动伸张与收缩 java 邮件...

    Minutrade-Test

    5. **Domains**:Grails的核心概念之一,类似于其他ORM框架的实体类,定义了数据库表结构和关联。 6. **Views**:呈现给用户的数据,通常由GSP(Grails Server Pages)模板生成,可以嵌入Groovy代码。 7. **Plugins*...

Global site tag (gtag.js) - Google Analytics