玩!框架 1.2.4 - 从 morphia 立即保存

Posted

技术标签:

【中文标题】玩!框架 1.2.4 - 从 morphia 立即保存【英文标题】:Play! framework 1.2.4 - immediate save from morphia 【发布时间】:2012-04-25 06:22:38 【问题描述】:

我写了 selenium 测试,即运行时更改对象 mongodb 的属性(使用 morphia 的 save 方法),然后检查此属性是否更改。但结果变量并没有发生。如何立即节省?

%
    // load models
    // deleted = true
%

#selenium            
    click('link=Delete')
    <!--                 
    SomeClass someObj = SomeClass.findById(id);
    someObj.deleted = true;
    someObj.save();
    -->
#/selenium

%
    models.SomeClass someObj2 = models.SomeClass.find("fieldName", "fieldValue").get();
    boolean expectedStatus = someObj2.deleted;
    org.junit.Assert.assertTrue(expectedStatus);
%

Save 方法在测试期间不会更改 MongoDB 中的值。测试结束后保存工作。这是个问题

【问题讨论】:

我使用的是 1.2.4 版本的 Play !框架 嘿!不认为我理解你的问题,预期的结果是什么,你得到的结果是什么? 好的。我有同样的问题***.com/questions/8488565/… 但我不使用 JPA。我使用 Morphia 插件作为游戏框架。 MongoDB中没有事务。 我不知道它的内部原理,但是#selenium%..% 这两个块是否有可能按顺序执行?我想当 selenium 测试生成时(首先),groovy 代码会运行,然后才会运行实际的 selenium 测试。 (您可以通过简单地将 Logger.info() 添加到 groovy 代码并在 selenium 代码中添加某种警报来进行检查) 没有。它们按顺序执行。我查过了。 【参考方案1】:

在此处使用WriteConcern。在执行写入操作(在您的情况下为删除)时,您可以指定“写入关注点”以告诉系统您希望仅在数据(例如)已刷新到磁盘并复制到 X 时才认为写入完成奴隶。 这里是 Morphia 的一个例子:

morpiaDao.delete(company, new WriteConcern(true));

【讨论】:

以上是关于玩!框架 1.2.4 - 从 morphia 立即保存的主要内容,如果未能解决你的问题,请参考以下文章

Morphia - mongodb之ORM框架

玩! 1.2.5 与 mongodb |模型验证未发生

Spring、Morphia 和 DataAccessException 实现

玩框架! (1.2.4):null前几个动态参数

玩!框架 1.2.4:是不是可以知道待处理作业的参数(doJobWithResult)

玩!框架 1.2.4 根上下文问题