我在播放框架中使用了squeryl,并定义了一些内容:
case class User(name:String, age:Int, ...) extends KeyedEntity[Long] {
val id = 0
}
数据库中name
字段的长度定义为varchar(50)
。
由于我们需要在保存到数据库之前验证name
之类的值,我必须手动验证它们:
checkLengthOf(user.name, 50);
如果还有很多字段,我需要手动进行大量验证:
checkLengthOf(user.field1, ???);
checkLengthOf(user.field2, ???);
checkLengthOf(user.field3, ???);
checkLengthOf(user.field3, ???);
checkLengthOf(user.field4, ???);
我想知道有没有简单的方法可以做到这一点?
当我在Java时,有一些orm框架提供了一些自动进行验证的注释,我可以用squeryl做同样的事吗?
答案 0 :(得分:0)
Squeryl本身不提供验证。它的目的是为了只做一个非常有效的DSL与数据库交互。
如果你真的想要自动化,你可以自己做。 Squeryl 0.9.6(目前在RC2)提供生命周期回调方法,您可以使用它们来插入自己的验证逻辑。它尚未记录,但您可以看到一些示例In the tests。
由于Squeryl使用编译为常规Java对象的POSO,您甚至可以使用它来插入Java库,如hibernate-validations .....如果你真的想要。
我不知道您是如何收到更新的,但另外还有一件事可能是lift-squeryl-record。它允许您将字段定义为对象及其验证逻辑。 Record还集成了Lift的CRUD生成和LiftScreen,这是一个非常强大的工具,用于定义表单以及验证和处理逻辑。