Hibernate代理上的Bean验证失败?预期的行为?

时间:2013-06-02 09:34:55

标签: hibernate jpa lazy-loading bean-validation behavior

我正在使用

  • hibernate-core-4.0.1.Final
  • hibernate-validator-4.2.0.Final

我有一个懒惰的可加载实体

@NotNull
@OneToOne(fetch = FetchType.LAZY,optional = false,cascade = CascadeType.PERSIST)
@JoinColumn(name="library_id")
private Library library;

public Library getLibray() {
    return library;
}

和defaultValidator

 private final ValidatorFactory factory = Validation
           .buildDefaultValidatorFactory();
 private final Validator val = factory.getValidator();

当我尝试验证使用@NotNull, @Size注释的未附加和附加的实体时,依此类推。 一切正常。但是,当我通过Lazy Load加载实体并尝试验证它。 验证器每次都失败。这似乎是由于我获得了一个Hibernate代理对象。

我可以轻易地解决这个“问题”。只是因为它没有使用它。(但在我的情况下这不是那么有利)

这是预期的行为吗?我是否在OpenJPA,EclipseLink中获得相同的行为?

有个好星期天的人;)我希望我确实让问题清楚了吗?

1 个答案:

答案 0 :(得分:5)

问题可以通过注释方法而不是字段来解决。

这在HVAL-13问题以及HV-535中进一步讨论。如果替换注释不可行,则错误报告中建议的解决方案是使用HibernateProxyValidator。