SQLクエリの結果に基づいて検証を実行する必要があります。
クエリはアノテーションとして定義されています-エンティティBeanでは@NamedQueryとして定義されています。
Hibernateのドキュメント(doc)によると、次の操作でBeanを検証する可能性があります。pre
-
updatepre-insert
pre-delete
次のようになります:
<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>
問題は、上記の検証構成にBeanを接続する方法です。
更新しました:
エンティティクラス
...
@Entity
@NamedQuery(name = "isValutaKursExists", query = "SELECT id FROM CurrencyRate WHERE bankId = :bankNum")
@Table(name = "Currency")
public class Currency {
...