这个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领域模型,意味着将数据库中的表和字段映射成Grails应用中的领域类,这样就可以利用Grails的ORM(对象关系映射)机制,如GORM(Grails Object Relational Mapping),实现数据操作。...
通过阅读这份文档,开发者可以深入理解Grails 1.1的核心特性和开发流程,从而更好地利用Grails构建高效、健壮的Web应用。 总结来说,Grails 是一个强大的Web开发框架,借助Groovy的灵活性和Java生态的稳定性,为...
Grails支持多语言环境,通过`messages.properties` 文件实现国际化,可以根据用户浏览器设置自动选择对应的语言版本。 总结来说,《Grails用户手册》涵盖了从项目创建到部署运行的全过程,包括Grails的基础概念、...
标题提到的"学习grails框架时候自己写的例子"显然是一个用于实践Grails CRUD(创建、读取、更新、删除)操作的项目。 描述中提到了"自己分页,修改sql查询,带数据库",这表明这个例子涵盖了以下几个关键知识点: ...
4. **创建Grails项目**:现在,你可以通过Eclipse的"New" -> "Grails Project"来创建一个新的Grails项目。选择合适的Grails版本和其他配置,然后Eclipse会自动生成项目结构。 5. **开发与调试**:在Eclipse中,你...
- 在Eclipse的classpath variable中设置`GRAILS_HOME`变量,指向Grails的安装目录,避免在创建或导入项目时手动添加库文件。 - 在`Windows -> Preferences -> Groovy`中,勾选"Disable Groovy Compiler Generating...
通过《Grails权威指南》,你可以学习到如何利用Grails的强大功能来开发高效、可扩展的Web应用,同时也了解到如何利用Groovy语言和Grails框架的最佳实践,提升你的开发技能。这本书深入浅出地讲解了Grails的各个方面...
Eclipse插件提供了对Groovy和Grails的调试支持,你可以设置断点,查看变量值,甚至进行单步调试Grails脚本。在运行或调试Grails应用时,可以通过Eclipse的"Run Configurations"或"Debug Configurations"来配置启动...
例如,可以使用`grails create-app myapp`创建一个新的Grails应用,或者使用`grails run-app`启动已有的应用。 #### 四、总结 通过上述步骤,我们已经完成了Groovy和Grails的基本安装和配置工作。Groovy和Grails的...
例如,数据源的配置既可以在环境配置中直接设置,也可以通过JNDI数据源来管理。此外,还可以配置自动数据库移植功能,它会在应用启动时根据域类(domain class)结构自动创建数据库表。 Grails的命令行工具非常强大...
Grails的环境配置通常包括设置GRAILS_HOME路径以及将其添加到系统的PATH变量中。 **2. 创建新项目** 使用Grails命令行工具创建一个新的Grails应用,例如`grails create-app loginDemo`。这将在指定目录下生成一个...
如果你遇到因插件导致的编辑错误,可以在 `grails-app/conf/BuildConfig.groovy` 文件中添加以下配置: ``` grails.project.plugins.dir="./plugins" ``` 这将恢复旧的插件存储位置,从而解决编辑问题。 3. **...
1. **缓存策略**:合理设置缓存策略可以提高数据访问速度。例如,可以对频繁读取但不经常更新的数据进行缓存。 2. **数据库优化**:分析SQL语句,避免全表扫描,合理设计索引,优化JOIN操作,都是提升数据库性能的...
- **Domain Classes**:Grails中的领域类定义了数据库表结构,通过GORM自动创建表和字段。 - **Relationships**:支持一对一、一对多、多对多等关系映射,例如belongsTo、hasMany、hasOne等。 - **Criteria API**...
在本例中,我们看到项目版本为"0.1",组名设置为"demo",并应用了一系列插件,如"Eclipse"、"Idea"、"War"、"Grails-web"和"Grails-GSP"。这些插件分别用于IDE支持、构建WAR包、Web相关功能和服务器端页面(GSP)...
在Grails中,Ajax可以与JavaScript紧密集成,极大地提升了用户体验。 标题"grails ajax"表明我们将探讨如何在Grails应用中有效地使用Ajax技术。Ajax允许后台与服务器进行异步数据交换,而无需重新加载整个网页。这...
GORM支持动态及静态领域类,通过Grails的映射元数据来定义数据库表和字段。 5. **Grails插件系统** Grails的插件系统是其一大特色,允许开发者共享和复用功能。例如,`spring-security-core`插件用于安全控制,`...