`
seanwon
  • 浏览: 66107 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GRAILS ID GENERATOR 可以自己设置ID字段的值

阅读更多
这个bug已经在1.1正式版本修复,可以用insert:true来指定是新建对象。

必须在mapping里面指定:

id generator:'assigned', params:[type:'Integer']

不然会提示,没有找到此ID的对象。

有个问题,如果version指定为false,即使指定assigned,
在创建的时候,依然会导致update而不是save。

我解决的方式是用hql的insert来实现的,而没有用.save方法。

如果其他人有更好的方案,请提示,谢谢!

来看看官方给的解释:
Many legacy database files have composite keys and they rarely have a version number or timestamp. The GORM Mapping DSL is fantastic but the Composite ID has an issue when creating a new row. The domain.save() operation causes an SQL update. The problem arises when the version facility is turned off (via version:false) and the Hibernate generator is set to 'assigned' (id generator:'assigned') -- Hibernate is not able to sense that an insert is required.
This plugin adds a method called insert to all domain classes. It is up to the developer to predicate the call to save() or insert().

Note that Grails 1.0.2 provides a more elegant solution. The domain.save() method now accepts domain.save(insert:true) to explicitly predicate the insert operation. So use this plug-in only for Grails applications that are below version 1.0.2.

但是问题是我在1.1beta3版本,尝试使用save(insert:true)依然不起作用。
1.0.4版本是生效的。
分享到:
评论

相关推荐

    Grails Application Generator-开源

    将这些数据库反向工程到Grails领域模型,意味着将数据库中的表和字段映射成Grails应用中的领域类,这样就可以利用Grails的ORM(对象关系映射)机制,如GORM(Grails Object Relational Mapping),实现数据操作。...

    Grails Grails Grails

    通过阅读这份文档,开发者可以深入理解Grails 1.1的核心特性和开发流程,从而更好地利用Grails构建高效、健壮的Web应用。 总结来说,Grails 是一个强大的Web开发框架,借助Groovy的灵活性和Java生态的稳定性,为...

    grails-用户手册

    Grails支持多语言环境,通过`messages.properties` 文件实现国际化,可以根据用户浏览器设置自动选择对应的语言版本。 总结来说,《Grails用户手册》涵盖了从项目创建到部署运行的全过程,包括Grails的基础概念、...

    学习grails框架时候自己写的例子

    标题提到的"学习grails框架时候自己写的例子"显然是一个用于实践Grails CRUD(创建、读取、更新、删除)操作的项目。 描述中提到了"自己分页,修改sql查询,带数据库",这表明这个例子涵盖了以下几个关键知识点: ...

    eclipse开发grails插件

    4. **创建Grails项目**:现在,你可以通过Eclipse的"New" -> "Grails Project"来创建一个新的Grails项目。选择合适的Grails版本和其他配置,然后Eclipse会自动生成项目结构。 5. **开发与调试**:在Eclipse中,你...

    Eclipse下搭建Grails项目

    - 在Eclipse的classpath variable中设置`GRAILS_HOME`变量,指向Grails的安装目录,避免在创建或导入项目时手动添加库文件。 - 在`Windows -> Preferences -> Groovy`中,勾选"Disable Groovy Compiler Generating...

    Grails权威指南 Grails权威指南

    通过《Grails权威指南》,你可以学习到如何利用Grails的强大功能来开发高效、可扩展的Web应用,同时也了解到如何利用Groovy语言和Grails框架的最佳实践,提升你的开发技能。这本书深入浅出地讲解了Grails的各个方面...

    eclipse插件grails(groovy)

    Eclipse插件提供了对Groovy和Grails的调试支持,你可以设置断点,查看变量值,甚至进行单步调试Grails脚本。在运行或调试Grails应用时,可以通过Eclipse的"Run Configurations"或"Debug Configurations"来配置启动...

    Groovy和Grails配置方法

    例如,可以使用`grails create-app myapp`创建一个新的Grails应用,或者使用`grails run-app`启动已有的应用。 #### 四、总结 通过上述步骤,我们已经完成了Groovy和Grails的基本安装和配置工作。Groovy和Grails的...

    grails中文入门简介

    例如,数据源的配置既可以在环境配置中直接设置,也可以通过JNDI数据源来管理。此外,还可以配置自动数据库移植功能,它会在应用启动时根据域类(domain class)结构自动创建数据库表。 Grails的命令行工具非常强大...

    grails login

    Grails的环境配置通常包括设置GRAILS_HOME路径以及将其添加到系统的PATH变量中。 **2. 创建新项目** 使用Grails命令行工具创建一个新的Grails应用,例如`grails create-app loginDemo`。这将在指定目录下生成一个...

    grails学习

    如果你遇到因插件导致的编辑错误,可以在 `grails-app/conf/BuildConfig.groovy` 文件中添加以下配置: ``` grails.project.plugins.dir="./plugins" ``` 这将恢复旧的插件存储位置,从而解决编辑问题。 3. **...

    grails脚手架2次优化

    1. **缓存策略**:合理设置缓存策略可以提高数据访问速度。例如,可以对频繁读取但不经常更新的数据进行缓存。 2. **数据库优化**:分析SQL语句,避免全表扫描,合理设计索引,优化JOIN操作,都是提升数据库性能的...

    Grails权威指南.pdf

    - **Domain Classes**:Grails中的领域类定义了数据库表结构,通过GORM自动创建表和字段。 - **Relationships**:支持一对一、一对多、多对多等关系映射,例如belongsTo、hasMany、hasOne等。 - **Criteria API**...

    Grails开发之(Rest教程).docx

    在本例中,我们看到项目版本为"0.1",组名设置为"demo",并应用了一系列插件,如"Eclipse"、"Idea"、"War"、"Grails-web"和"Grails-GSP"。这些插件分别用于IDE支持、构建WAR包、Web相关功能和服务器端页面(GSP)...

    grails ajax

    在Grails中,Ajax可以与JavaScript紧密集成,极大地提升了用户体验。 标题"grails ajax"表明我们将探讨如何在Grails应用中有效地使用Ajax技术。Ajax允许后台与服务器进行异步数据交换,而无需重新加载整个网页。这...

    grails开发

    GORM支持动态及静态领域类,通过Grails的映射元数据来定义数据库表和字段。 5. **Grails插件系统** Grails的插件系统是其一大特色,允许开发者共享和复用功能。例如,`spring-security-core`插件用于安全控制,`...

Global site tag (gtag.js) - Google Analytics