我需要执行验证的基础上SQL查询结果。

查询被定义为注解的作为 @NamedQuery 在我的实体豆。

根据休眠文件(doc),有的可能性,以验证豆就下列行动:
更新前
预插入
预删除

看起来像:

<hibernate-configuration>
    <session-factory>
       ...
    <event type="pre-update">
       <listener class="org.hibernate.cfg.beanvalidation.BeanValidationEventListener"/>
    </event>
    <event type="pre-insert">
        <listener class="org.hibernate.cfg.beanvalidation.BeanValidationEventListener"/>
    </event>
    <event type="pre-delete">
        <listener class="org.hibernate.cfg.beanvalidation.BeanValidationEventListener"/>
    </event>
</hibernate-configuration>

问题是如何 连我的豆 与验证配置,如上所述。

更新:

实体类

...
@Entity
@NamedQuery(name = "isValutaKursExists", query = "SELECT id FROM CurrencyRate WHERE bankId = :bankNum")
@Table(name = "Currency")
public class Currency {
...
有帮助吗?

解决方案

问题是如何将我的豆与验证配置,如上所述。

你需要附加说明你豆注从豆验证API加 限制 喜欢 @NotNull, @Size (内置 的)或者为自己定义。但是,Bean验证不是真正的意思是 执行验证的基础上SQL查询结果.

顺便说一句,你提到的 @NamedQuery 所以我猜你正在使用休眠。.在这种情况下,我建议把豆验证与访问用户(而不是休眠).如果您使用的访问用户2.0,只是把Bean验证实施类路径。如果你访问用户使用1.0,请参阅 以前这个回答.

其他提示

是,合适的做法是,如 ValidCurrency 自定义约束和匹配的 ValidCurrencyValidator 。您将需要访问Hibernate的Session RESP。 EntityManager的在你的ConstraintValidator实现。你可以在如何做到这一点的休眠维基一些想法 - 内ConstraintValidator 访问Hibernate的Session一>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top