- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对嵌套域类有一个内部要求,我想将对父级关系的更新传播到子级。一个代码示例可以清楚地表明:
class Milestone {
static belongsTo = [project:Project]
static hasMany = [goals:OrgGoals, children:Milestone]
String name
Date start
Date estimatedEnd
Date achievedEnd
...
}
def beforeUpdate()
{
// check if an actual change has been made and the estimated end has been changed
if(this.isDirty() && this.getDirtyPropertyNames().contains("estimatedEnd"))
{
updateChildEstimates(this.estimatedEnd,this.getPersistentValue("estimatedEnd"))
}
}
private void updateChildEstimates(Date newEstimate, Date original)
{
def difference = newEstimate - original
if(difference > 0)
{
children.each{ it.estimatedEnd+= difference }
}
}
void testCascadingUpdate() {
def milestone1 = new Milestone(name:'test Parent milestone',
estimatedEnd: new Date()+ 10,
)
def milestone2 = new Milestone(name:'test child milestone',
estimatedEnd: new Date()+ 20,
)
milestone1.addToChildren(milestone2)
milestone1.save()
milestone1.estimatedEnd += 10
milestone1.save()
assert milestone1.estimatedEnd != milestone2.estimatedEnd
assert milestone2.estimatedEnd == (milestone1.estimatedEnd + 10)
}
Unit Test Results.
Designed for use with JUnit and Ant.
All Failures
Class Name Status Type Time(s)
MilestoneIntegrationTests testCascadingUpdate Failure Assertion failed: assert milestone2.estimatedEnd == (milestone1.estimatedEnd + 10) | | | | | | | | | | | Mon Jun 06 22:11:19 MST 2011 | | | | Fri May 27 22:11:19 MST 2011 | | | test Parent milestone | | false | Fri May 27 22:11:19 MST 2011 test child milestone
junit.framework.AssertionFailedError: Assertion failed:
assert milestone2.estimatedEnd == (milestone1.estimatedEnd + 10)
| | | | | |
| | | | | Mon Jun 06 22:11:19 MST 2011
| | | | Fri May 27 22:11:19 MST 2011
| | | test Parent milestone
| | false
| Fri May 27 22:11:19 MST 2011
test child milestone
at testCascadingUpdate(MilestoneIntegrationTests.groovy:43)
0.295
最佳答案
我为您提供解决方案。
1)更新里程碑1的EstimatedEnd之后,在第二个保存调用中调用save(flush:true)。这将强制beforeUpdate()立即触发。
2)即使在执行#1之后,您的断言仍将继续失败,因为您正在比较2个稍有不同的日期(您在每个Milestone构造函数中使用单独的Date对象,因此第二个日期比第一个日期稍晚/更大)。您使用了相同的日期实例,例如
Date date = new Date()
def milestone1 = new Milestone(name:'test Parent milestone',
estimatedEnd: date + 10)
def milestone2 = new Milestone(name:'test child milestone',
estimatedEnd: date + 20,
)
关于hibernate - Grails钩入GORM beforeUpdate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925807/
我对嵌套域类有一个内部要求,我想将对父级关系的更新传播到子级。一个代码示例可以清楚地表明: class Milestone { static belongsTo = [project:Proj
我想将域类保存到数据库中而不指定createdUser或createdDate。我创建了一个名为AuditingInfo的对象,并将其嵌入到主要的Person域类中,如下所示: AuditingInf
我有一个简单的用户模型如下: 'use strict'; let hashPassword = (user, options) => { if (!user.changed('password
我有一个使用 TypeORM 的 NodeJS 后端服务器,每次更新实体时我都需要执行插入。所以我的 BaseModel 类中有以下代码: abstract class BaseModel { //
刚开始学习vue js,一直在试验一个递归树的例子,基于这个例子官方例子here 上面的示例以具有单根 后跟许多子元素的 treedata 开始,我试图将其扩展为具有多个根元素, 例子 here .
仅当满足某些条件时,我才需要加密密码。 beforeUpdate: function (value, cb) { User.findOne(value.id) .exec(function (er
我在 grails 项目中使用了 GORM API 反射(reflect)的 afterUpdate 方法。 class Transaction{ Person receiver; P
我正在使用 nodejs/express/sequelize 开发 API。 实际上是在我创建用户帐户时。由于 bcrypt,我得到了一个 Hook 'beforeCreate' 来散列用户密码: U
当我取消移动包含新项目的数组时,会触发两次 beforeUpdate 方法。当我推送新项目时,情况并非如此。有谁知道为什么要这样做?它搞砸了我的应用程序... 最佳答案 经过反复试验,我找到了解决方案
很清楚如何访问新值,第一个参数包含它们 更新前:函数(值,cb){....} 但是我怎样才能访问要替换的当前值呢? 最佳答案 为了访问当前值,您必须进行调用并获取当前记录。 models/user.j
我如何在 sequelize 上使用 beforeUpdate 钩子(Hook)中止更新操作并返回一个对象作为中止更新的结果, 如果我有类似的东西: User.beforeUpdate(functio
在旧的 Grails 版本中,我们在域类中有这些 beforeUpdate、beforeInsert、beforeSave 事件。 我在 Grails 3.x 中找不到它们了 - 我现在如何轻松处理这
我有一个带有 2 个 Hook 的简单用户模型。 User.beforeCreate(setSaltAndPass) User.beforeUpdate(setSaltAndPass) 第一个完美运行
我正在为我的无服务器 lambda 函数使用 Sequelize Typescript 模块。用户模型有两个钩子(Hook),beforecreate 和 beforeupdate。用户模型如下所示:
我在我的应用程序中使用 grails 版本 2.1.0,我在我的域类中有一个 before 插入,它对密码进行如下编码。 包 com.valuelabs.bets.security 类 SecUser
我从 here 尝试过 Golang Gorm Hook ,但在尝试更新表时不触发任何内容 md_transaction 通过型号国防部 ,这是我的golang代码: package models i
在 Sails 的 Waternline 中,我需要能够将以前的值与新值进行比较,并在某些情况下分配新的属性。例如: beforeUpdate: function(newValues, callbac
我们公司使用的大多数域对象都会有一些共同的属性。这些代表创建对象的用户、最后更新对象的用户以及他们用来执行此操作的程序。 为了DRY 的利益退出我的域类后,我想找到某种方法将相同的 beforeIns
想要在保存之前/在 Controller 中创建值之前添加验证逻辑。 想要将错误抛给管理面板用户。因此他们可以更正相同的值并重新提交表单 BeforeSave :我能够添加逻辑。但我不知道如何将错误消
我在Opportunity对象上创建了一个触发器,用于在插入之前和更新之前,通过该触发器将Trigger.newMap变量作为自变量发送给我的顶点类,在其中我根据另一个Object中的记录检查特定组合
我是一名优秀的程序员,十分优秀!