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

2024-03-02

我在用着

  • 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;
}

和一个默认验证器

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

当我尝试验证带有注释的未附加和附加实体时@NotNull, @Size等等。 一切正常。但是当我通过延迟加载加载实体并尝试验证它时。 验证器每次都会失败。这似乎是因为我得到了一个 Hibernate 代理对象。

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

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

祝大家周日愉快;)我希望我确实把问题说清楚了?


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

这在中进一步讨论HVAL-13 https://hibernate.atlassian.net/browse/HVAL-13问题并且也在HV-535 https://hibernate.atlassian.net/browse/HV-535。如果替换注释不可行,错误报告中建议的解决方案是使用 HibernateProxyValidator。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 代理上的 Bean 验证失败?预期行为? 的相关文章

随机推荐