首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Salat/Casbah对Scala case类进行预持性验证

使用Salat/Casbah对Scala case类进行预持性验证
EN

Stack Overflow用户
提问于 2012-10-05 23:59:52
回答 1查看 453关注 0票数 1

假设我有一个使用Salat/Casbah/Mongo堆栈持久化的Scala case类,我想要设置预持久化验证逻辑,就像在Rails中使用ActiveRecord钩子或在Java中使用JSR303bean验证一样。

也许在函数范式中有一种更好的方式来思考这一点,但我想要完成以下内容:

代码语言:javascript
运行
复制
case class SomeItem(
  id: ObjectId = new ObjectId,
  someProperty: String) {

  @PrePersistence
  def validate() = {
     //perform some logic
     //fail document save in certain conditions
  }
}

我很难找到任何关于如何在Salat中做这样的事情的文档。我确实看到了一个@Persist注释,但它似乎专注于序列化特定的值,而不是创建挂钩。

似乎有一种选择是覆盖case类的SalatDAO中的save方法。有没有人有这样的例子,或者知道有一种更好的内置方法来处理与预持久化事件相关的验证?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 21:25:03

Salat开发人员在这里。

是的,@Persist只是为了确保不在构造函数中的字段被序列化-这对于在MongoDB中操作数据特别有用。一个例子是,您希望确保所有字段都填充了一个值,以便可以合理地排序,但该值是一个可能不存在的Option

不幸的是,Java驱动程序不像Ruby驱动程序那样提供生命周期回调:(

但是你想要的东西应该很容易做到。请在https://github.com/novus/salat/issues上提交一个问题,并描述您希望验证如何运行-我们可以开始讨论,我可以尝试在1.9.2版本中为您提供一些内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12749927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档