10

我在用着

  • 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等等。一切正常。但是当我通过延迟加载加载实体并尝试验证它时。验证器每次都失败。这似乎是因为我得到了一个休眠代理对象。

我可以通过取消代理轻松解决这个“问题”。(但这在我的情况下不太有利)

这是预期的行为吗?我在 OpenJPA、EclipseLink 中是否得到相同的行为......?

祝大家星期天愉快;)我希望我确实把问题说清楚了吗?

4

1 回答 1

8

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

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

于 2013-06-02T09:45:35.703 回答