小编And*_*uta的帖子

Spring MVC + Hibernate:数据验证策略

我们都知道,Spring MVC通常与Hibernate Validator和JSR-303很好地集成.但正如有人所说,Hibernate Validator只适用于Bean Validation,这意味着应该将更复杂的验证推送到数据层.此类验证的示例:业务密钥唯一性,内部记录依赖性(通常指向数据库设计问题,但我们都生活在一个不完美的世界).即使像字符串字段长度这样的简单验证也可能由某个DB值驱动,这使得Hibernate Validator无法使用.

所以我的问题是,Spring或Hibernate或JSR是否提供了执行此类复杂验证的功能?是否有一些已建立的模式或技术部分可以在基于Spring和Hibernate的标准Controller-Service-Repository设置中执行此类验证?

更新:让我更具体一点.例如,有一个表单向控制器的save方法发送AJAX保存请求.如果出现一些验证错误 - 简单或"复杂" - 我们应该回到浏览器,其中一些json指示有问题的字段和相关错误.对于简单错误,我可以从中提取字段(如果有)和错误消息BindingResult.您会针对"复杂"错误提出什么样的基础设施(可能是特定的,而不是临时的例外?)?使用异常处理程序对我来说似乎不是一个好主意,因为在save方法之间分离单个验证过程@ExceptionHandler并使事情变得复杂.目前我使用一些特殊的例外(如,ValidationException):

public @ResponseBody Result save(@Valid Entity entity, BindingResult errors) {
    Result r = new Result();
    if (errors.hasErrors()) {
        r.setStatus(Result.VALIDATION_ERROR);     
        // ...   
    } else {
        try {
            dao.save(entity);
            r.setStatus(Result.SUCCESS);
        } except (ValidationException e) {
            r.setStatus(Result.VALIDATION_ERROR);
            r.setText(e.getMessage());
        }
    }
    return r;
}
Run Code Online (Sandbox Code Playgroud)

你能提供更优化的方法吗?

java validation spring-mvc hibernate-validator

22
推荐指数
1
解决办法
1万
查看次数

为equals()实现选择字段的最佳实践

在编写单元测试时,我常常遇到这样的情况equals(),即测试中的某个对象assertEquals应该与在实际环境中的工作方式不同.以某些界面为例ReportConfig.它有id几个其他领域.逻辑上,当一个配置id匹配时,一个配置等于另一个配置.但是,当谈到测试某些特定实现时XmlReportConfig,显然我希望匹配所有字段.一种解决方案不是equals在测试中使用,只是迭代对象属性或字段并进行比较,但它似乎不是一个好的解决方案.

因此,除了这种特定类型的情况之外,我想要理清什么是在语义上而不是在技术上实现平等的最佳实践.

java equality equals

15
推荐指数
1
解决办法
8269
查看次数

IPython中输入编码的奇怪问题

我在Windows XP SP3上使用最新的IPython运行python 2.6,我有两个问题.我的第一个问题是,在IPython下,我无法直接输入Unicode字符串,因此无法打开具有非拉丁名称的文件.让我来证明一下.在通常的python下,这工作:

>>> sys.getdefaultencoding()
'ascii'
>>> sys.getfilesystemencoding()
'mbcs'
>>> fd = open(u'm:/???????/home.tdl')
>>> print u'm:/???????/home.tdl'
m:/???????/home.tdl
>>>
Run Code Online (Sandbox Code Playgroud)

顺便说一下,那里是西里尔文.在IPython下,我得到:

In [49]: sys.getdefaultencoding()
Out[49]: 'ascii'

In [50]: sys.getfilesystemencoding()
Out[50]: 'mbcs'

In [52]: fd = open(u'm:/???????/home.tdl')
---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)

C:\Documents and Settings\andrey\<ipython console> in <module>()

IOError: [Errno 2] No such file or directory: u'm:/\x81\xab\xae\xaa\xad\xae\xe2/home.tdl'

In [53]: print u'm:/???????/home.tdl'
-------------->print(u'm:/???????/home.tdl')
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error …
Run Code Online (Sandbox Code Playgroud)

python windows filesystems locale ipython

13
推荐指数
1
解决办法
8316
查看次数

Hibernate - 按公式属性排序标准

假设我有一个实体MyEntity,它有一个基于公式的属性fmlaProp.现在说我创建一个标准:

s.createCriteria(MyEntity.class) 
    .setProjection( 
        Projections.distinct( 
            Projections.property("fmlaProp"))) 
    .addOrder(Order.asc("fmlaProp"));
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到以下SQL:

SELECT DISTINCT fmlaProp-sql FROM MY_ENTITY_TABLE ORDER BY fmlaProp-sql
Run Code Online (Sandbox Code Playgroud)

这给了Oracle一个错误,说明了order-by表达式是未选中的.然后我尝试了以下标准:

s.createCriteria(MyEntity.class) 
    .setProjection( 
        Projections.distinct(
            Projections.alias(
                Projections.property("fmlaProp"),
                "alias1")) 
    .addOrder(Order.asc("alias1"));
Run Code Online (Sandbox Code Playgroud)

哪个生成"按别名排序1",工作正常.但它有点难看 - 代码必须"知道"那些违反"一次写入"原则的公式属性.对此有何想法或建议?先感谢您.

oracle hibernate hibernate-criteria

7
推荐指数
1
解决办法
2164
查看次数

为什么Oracle SQL在一个连接中神秘地解决了歧义,而在其他连接中却没有

我是Oracle 10g用户.我不得不写一些SQL查询,并发现了一个神秘的(我看到它)行为.让我们假设我们有一个表,它可以加入某种简单的两级树结构.下一个查询给出了"歧义错误",这是预期的:

select title
  from table1
    left join table1 on condition
Run Code Online (Sandbox Code Playgroud)

但如果我要在连接中再添加一个表,那么歧义问题就会消失:

select title
  from table1
    join table2 on other_condition
    left join table1 on condition
Run Code Online (Sandbox Code Playgroud)

对此有何解释?我完全想念它......完整的测试用例可以在http://pastebin.com/webf513w找到

sql oracle ambiguity oracle10g

3
推荐指数
1
解决办法
745
查看次数

oracle - 使用主键创建视图

这个问题在意义上是重复的,我还是要澄清一下.Oracle文档明确指出可以在CREATE VIEW子句中指定主键(11g docs具有相同的概念).然而,当我尝试这样做时:

create or replace view ABC(A, B, C, CONSTRAINT A_PK PRIMARY KEY (A)) ....
Run Code Online (Sandbox Code Playgroud)

ORA-00922: missing or invalid option指着"主键"一词.问题是,是Oracle还是Oracle文档存在问题?

oracle ddl oracle10g

3
推荐指数
1
解决办法
2万
查看次数

jqGrid - 格式比率字段为百分比值

我的服务器代码将一些列作为比率值传输,0.0到1.0.我需要格式化以百分比形式编辑它.我想在JavaScript方面这样做,而无需修改服务器端.因此,如果我添加一个自定义格式化程序,只是将该值乘以100,则显示按预期工作.此外,当我点击编辑按钮时,内联编辑框也会以百分比形式显示值.麻烦在我保存时开始 - 这个值再次用格式化器转换,给我10000个东西.好吧,我需要对称,所以我创建了一个unformatter,它只是将值除以100.但这也不行 - 现在编辑控件将其显示为不是我想要的比例(虽然保存现在可以正常工作).

有没有改变服务器代码的方法?

formatter jqgrid percentage

2
推荐指数
1
解决办法
4676
查看次数

IntelliJ IDEA 13无法识别Maven镜像

我有一个Maven项目,镜像设置为centralrepo,就像这样:

<settings>
  ...
  <mirrors>
    <mirror>
      <id>central-my</id>
      <mirrorOf>central</mirrorOf>
      <name>Maven Central Repo mirror</name>
      <url>http://local_url:15999/nexus/content/repositories/central/</url>
    </mirror>
  </mirrors>
  ...
</settings>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我导入此项目为IDEA,使其使用settings.xml它仍然没有看到这面镜子,向我展示http://repo.maven.apache.org/maven2,而不是(Project Settings> Maven> Repositories).问题是,我无法从此回购更新,因为我在内部网络上.在这种情况下我该怎么办?

intellij-idea maven

2
推荐指数
1
解决办法
1740
查看次数