今天新建一个grails项目,执行保存的时候总是出错
class Manipulator { String name; String passwd; String createTime; String updateTime; int isDeleted=0;//0没有删除,1,已删除 static constraints = { name unique: true } def beforeInsert = { createTime = utils.DateUtil.getStrDate(null, null); } def beforeUpdate = { updateTime = utils.DateUtil.getStrDate(null, null); } }
不知道是为什么, beforinsert始终无法工作,
后来在执行save之前给createTime和updateTime赋值,可以保存进去,
知道了不是数据库的问题,一定是设置的问题,
查看config.groovy等配置文件之后还是没有发现问题。
后来把代码该了一下
class Manipulator { String name; String passwd; String createTime; String updateTime; int isDeleted=0;//0没有删除,1,已删除 static constraints = { name unique: true createTime blank:true ,nullable:true; updateTime blank:true ,nullable:true; } def beforeInsert = { createTime = utils.DateUtil.getStrDate(null, null); } def beforeUpdate = { updateTime = utils.DateUtil.getStrDate(null, null); } }
添加了 约束,可以为空,可以为null,只个时候可以保存成功了。
这样设计有点不合理啊,不过没办法。设计是这样的。
这里面也体现一个问题。就是domain里面的约束是代码级别的,不涉及到数据库,
所有的约束检查都是在程序执行的时候完成的,这个时间是在插入数据库之前,也就是说这个时候数据库约束还没有起作用,
以后要注意domain里的约束和数据里面的约束的区别了
mark 一下
===============================================================================
相关推荐
1. **模型(Model)**: 在Grails中,模型通常由Domain Classes表示,它们是持久化的实体,与数据库表对应。Domain Classes使用Groovy的元编程特性,如属性验证和动态方法,提供数据验证和业务逻辑。 2. **视图...
3. **领域驱动设计(Domain-Driven Design, DDD)**:Grails的域类直接映射到数据库表,文档会解释如何定义领域类、关联关系,以及Lifecycle方法,如`beforeInsert`、`beforeUpdate`等。 4. **服务层**:Grails的...
创建新项目时,你可以利用配置好的Grails外部工具执行`create-domain-class`等命令,快速生成领域模型类。在Eclipse中,Grails项目的结构和管理将得到很好的支持,包括源代码编辑、构建、测试和调试。 注意,尽管...
例如,`grails create-app` 创建新应用,`generate-controller` 生成控制器,`generate-domain-class` 生成领域类。 四、GORM(Grails Object Relational Mapping) GORM是Grails的持久化框架,它实现了Hibernate...
《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...
此外,还可以配置自动数据库移植功能,它会在应用启动时根据域类(domain class)结构自动创建数据库表。 Grails的命令行工具非常强大,它支持创建Gant脚本来自动化重复的构建任务。用户可以创建可复用的Grails脚本...
在Grails框架中,域模型(Domain Classes)是用于表示业务实体的对象,它们通常映射到数据库中的表。通过GORM(Grails Object Relational Mapping),Grails提供了自动的ORM支持,使得开发者无需编写复杂的SQL语句...
GORM 是 Grails 的内置 ORM 框架,它允许开发者使用 Domain Class 来定义数据模型,并自动提供数据库操作。GORM 支持 Hibernate 和 ActiveJDBC,使得数据库操作更加简单。 **Controllers** Controllers 在 Grails ...
Grails提供了多种命令用于生成模型类、控制器、服务等工件,如`generate-domain-class`用于创建领域模型,`generate-controller`用于生成控制器。 9. **生成Grails应用** 使用Grails的命令行工具,你可以快速生成...
- **创建应用**:使用`grails create-app Contact`命令可快速生成名为“Contact”的应用框架,该命令自动生成了标准的项目目录结构,包括但不限于`grails-app`下的`conf`、`controller`、`domain`、`i18n`、`...
对于Grails开发,我们需要的是Eclipse中的Grails插件,它能够提供对Grails项目的创建、运行、调试等一系列功能。 **Grails**是基于Groovy语言的全栈式Web开发框架,它借鉴了Ruby on Rails的设计理念,提供了快速...
目录结构包括`grails-app/conf`存储配置文件,`grails-app/controllers`存放控制器,`grails-app/domain`包含领域类,`grails-app/services`用于业务逻辑,`grails-app/views`是视图文件等。 在了解了Grails的基本...
3. **Domain Classes**:Grails的领域模型类,基于Groovy,具有自动持久化的能力,通过`GORM(Grails Object Relational Mapping)`与数据库交互。 4. **Controllers**:控制层负责处理HTTP请求,调用业务逻辑,并...
### Grails DC Cheat Sheet 1.09:深入解析Grails Domain Class的使用与约束 在Grails框架中,Domain Class扮演着至关重要的角色,它不仅定义了数据模型,还负责处理数据库交互、验证和业务逻辑。本文将基于`Grails...
Grails的脚手架基于GORM(Grails Object Relational Mapping)和Groovy模板引擎,通过解析Domain Class自动构建出Controller、View以及相应的模板文件。在运行时,这些文件负责处理数据的增删改查操作。了解这一工作...
通过本篇文章,我们深入了解了 Grails 的基本概念和操作流程,包括如何创建应用、定义 Domain 类、创建 Controller 以及进行简单的单元测试等。这些基础知识对于初学者来说至关重要,能够帮助他们快速上手 Grails ...
4. **Grails MVC**:深入理解Model-View-Controller架构,包括Domain Classes(模型)、Controllers(控制器)和Views(视图)的使用。 5. **GORM数据库交互**:学习如何使用GORM进行数据持久化,包括定义领域类、...