hibernate - 如何在 Grails 中暂时禁用只读二级缓存 hibernate 策略?

标签 hibernate orm grails ehcache second-level-cache

在我的 grails 应用程序中,用户永远不会更改我的某些域类。

但是,有时需要进行一些维护工作,管理员应该能够不时创建/编辑几个实例(假设每年两次)。

我想为这些域类设置只读二级缓存策略(静态映射= {缓存使用:'只读'})并且我希望能够“禁用”(在非常特殊的情况下)只读策略,以便通过 Grails 脚手架编辑 View 更新某些实例。

这可能吗?你建议我做什么?

编辑:我正在实现的解决方案是 Pascal 和 Burt 答案的混合(请参阅评论)。这两个答案都很棒并且很有帮助。所以我在选择接受的答案时遇到了两难!不管怎样,谢谢你。

最佳答案

这可能是可能的,但很可能不是微不足道的。我会使用 groovy.sql.Sql 直接插入。您失去了验证,但您可以创建实例并验证它们,但不能调用 save()。如果没问题的话就进行 SQL 插入,例如

def thing = new Thing(params)
if (thing.validate()) {
   new Sql(dataSource).executeInsert(
             "insert into thing(name) values(?)", [params.name])
}
else {
   // report validation error
}

关于hibernate - 如何在 Grails 中暂时禁用只读二级缓存 hibernate 策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238695/

相关文章:

java - Spring MVC 表单提交绑定(bind)动态嵌套属性

java - hibernate :从列表中删除项目不会持续存在

java - 选择动态层次结构的 jpa 自引用中的所有子子详细信息

python - 没有 SQLAlchemy 或其他 ORM 的 Flask CRUD 编程

grails - Grails:没有hasMany的域对象中的集合

mysql - 在域对象约束中指定grails浮点精度,如何?

java - JPA 在列表/集合上获取连接过滤器

mysql - 如何在数据库中执行一对一关系插入

php - 反向外键 Doctrine

grails - Grails hbm2ddl.SchemaUpdate错误失败