`

grails domain里面beforeinsert无效

 
阅读更多

今天新建一个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 一下 

 

===============================================================================

 

分享到:
评论

相关推荐

    Grails Grails Grails

    1. **模型(Model)**: 在Grails中,模型通常由Domain Classes表示,它们是持久化的实体,与数据库表对应。Domain Classes使用Groovy的元编程特性,如属性验证和动态方法,提供数据验证和业务逻辑。 2. **视图...

    Grails1.1中文文档

    3. **领域驱动设计(Domain-Driven Design, DDD)**:Grails的域类直接映射到数据库表,文档会解释如何定义领域类、关联关系,以及Lifecycle方法,如`beforeInsert`、`beforeUpdate`等。 4. **服务层**:Grails的...

    Eclipse下搭建Grails项目

    创建新项目时,你可以利用配置好的Grails外部工具执行`create-domain-class`等命令,快速生成领域模型类。在Eclipse中,Grails项目的结构和管理将得到很好的支持,包括源代码编辑、构建、测试和调试。 注意,尽管...

    grails-用户手册

    例如,`grails create-app` 创建新应用,`generate-controller` 生成控制器,`generate-domain-class` 生成领域类。 四、GORM(Grails Object Relational Mapping) GORM是Grails的持久化框架,它实现了Hibernate...

    Grails权威指南 Grails权威指南

    《Grails权威指南》是一本全面深入探讨Grails框架的专著,旨在帮助读者掌握这一强大的Web开发工具。Grails是一种基于Groovy语言的开源框架,它为构建现代、高效的应用程序提供了简洁高效的解决方案。本指南针对不同...

    grails中文入门简介

    此外,还可以配置自动数据库移植功能,它会在应用启动时根据域类(domain class)结构自动创建数据库表。 Grails的命令行工具非常强大,它支持创建Gant脚本来自动化重复的构建任务。用户可以创建可复用的Grails脚本...

    the definitive guide to grails 2

    在Grails框架中,域模型(Domain Classes)是用于表示业务实体的对象,它们通常映射到数据库中的表。通过GORM(Grails Object Relational Mapping),Grails提供了自动的ORM支持,使得开发者无需编写复杂的SQL语句...

    Grails中文参考手册

    GORM 是 Grails 的内置 ORM 框架,它允许开发者使用 Domain Class 来定义数据模型,并自动提供数据库操作。GORM 支持 Hibernate 和 ActiveJDBC,使得数据库操作更加简单。 **Controllers** Controllers 在 Grails ...

    grails中文参考手册

    Grails提供了多种命令用于生成模型类、控制器、服务等工件,如`generate-domain-class`用于创建领域模型,`generate-controller`用于生成控制器。 9. **生成Grails应用** 使用Grails的命令行工具,你可以快速生成...

    使用Grails快速开发Web应用

    - **创建应用**:使用`grails create-app Contact`命令可快速生成名为“Contact”的应用框架,该命令自动生成了标准的项目目录结构,包括但不限于`grails-app`下的`conf`、`controller`、`domain`、`i18n`、`...

    eclipse开发grails插件

    对于Grails开发,我们需要的是Eclipse中的Grails插件,它能够提供对Grails项目的创建、运行、调试等一系列功能。 **Grails**是基于Groovy语言的全栈式Web开发框架,它借鉴了Ruby on Rails的设计理念,提供了快速...

    使用 Grails 快速开发 Web 应用程序

    目录结构包括`grails-app/conf`存储配置文件,`grails-app/controllers`存放控制器,`grails-app/domain`包含领域类,`grails-app/services`用于业务逻辑,`grails-app/views`是视图文件等。 在了解了Grails的基本...

    grails-core源码

    3. **Domain Classes**:Grails的领域模型类,基于Groovy,具有自动持久化的能力,通过`GORM(Grails Object Relational Mapping)`与数据库交互。 4. **Controllers**:控制层负责处理HTTP请求,调用业务逻辑,并...

    Grails_DC_Cheat_Sheet_1.09.pdf

    ### Grails DC Cheat Sheet 1.09:深入解析Grails Domain Class的使用与约束 在Grails框架中,Domain Class扮演着至关重要的角色,它不仅定义了数据模型,还负责处理数据库交互、验证和业务逻辑。本文将基于`Grails...

    grails脚手架2次优化

    Grails的脚手架基于GORM(Grails Object Relational Mapping)和Groovy模板引擎,通过解析Domain Class自动构建出Controller、View以及相应的模板文件。在运行时,这些文件负责处理数据的增删改查操作。了解这一工作...

    grails入门经典

    通过本篇文章,我们深入了解了 Grails 的基本概念和操作流程,包括如何创建应用、定义 Domain 类、创建 Controller 以及进行简单的单元测试等。这些基础知识对于初学者来说至关重要,能够帮助他们快速上手 Grails ...

    Grails从入门指南(第二版)

    4. **Grails MVC**:深入理解Model-View-Controller架构,包括Domain Classes(模型)、Controllers(控制器)和Views(视图)的使用。 5. **GORM数据库交互**:学习如何使用GORM进行数据持久化,包括定义领域类、...

Global site tag (gtag.js) - Google Analytics