比较悲催的调了一晚上,因为以前没在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,否则会重复。
相关推荐
在Eclipse中开发Grails项目是一项技术性较强的工作,涉及到多个步骤和配置。Grails是一个基于Groovy语言的开源Web应用框架,它简化了Java开发流程。以下将详细阐述如何在Eclipse环境下配置Grails项目并进行调试。 ...
在 Grails 中,每个组件都有其特定的位置,这种结构使得即使初学者也能快速上手,并将更多精力集中在解决业务问题上,而不是框架本身的配置和集成。 Grails 的学习过程通常通过实例驱动,展示如何快速构建一个功能...
URL映射是Grails MVC模式中的一部分,负责将URL路径转换为控制器动作,从而实现URL与业务逻辑的直观关联。在Grails 2.5.4中,这一功能被封装在`grails-web-url-mappings`模块中。 首先,URL映射的配置文件通常位于`...
GORM还支持不同类型的关联,如一对一(One-to-one)、一对多(One-to-many)和多对多(Many-to-many)关系,允许在领域模型之间建立复杂的关系。 在并发控制方面,Groovy和Grails提供了乐观锁和悲观锁的概念。乐观...
- **自定义关联链接**:提供了自定义一对多和多对多关联的方式。 - **自定义关联获取策略**:讨论了如何优化关联对象的加载策略,以提高性能。 - **二级缓存**:介绍了GORM中的二级缓存机制,以及如何配置和使用...
- **关联关系**:包括一对一、一对多、多对多等多种类型。 - **一对一关联**:通过`belongsTo`或`hasOne`属性实现。 - **一对多关联**:使用`hasMany`属性。 - **多对多关联**:通常通过中间表实现。 - **集合...
1. **REST 支持**:Grails 是一个基于 Groovy 的全栈 Web 开发框架,它对 RESTful Web 服务提供了全面的支持。这意味着开发者可以轻松创建符合 REST 风格的服务接口,包括支持 HTTP 请求的所有方法。 2. **URL 映射*...
正则表达式 lucene索引合并 探查Weblogic JDBC Multipool 问题 struts通用Exception处理 Grails中默认数据库HSQLDB点滴 从request获取各种路径总结 DIV实现的表格自动伸张与收缩 java 邮件...
5. **Domains**:Grails的核心概念之一,类似于其他ORM框架的实体类,定义了数据库表结构和关联。 6. **Views**:呈现给用户的数据,通常由GSP(Grails Server Pages)模板生成,可以嵌入Groovy代码。 7. **Plugins*...