23

ここで説明するように、制約チェックを追加しようとしています。EclipseLink/JPAで@OneToManyのカーディナリティを指定する方法

4

4 に答える 4

22

これが私が(Mavenで)使用している依存関係です:

<dependencies>
  <!-- Bean Validation API and RI -->
  <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.0.0.GA</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.0.2.GA</version>
  </dependency>
</dependencies>

このリポジトリから取得できること:

<repositories>
  <repository>
    <id>jboss</id>
    <name>JBoss repository</name>
    <url>http://repository.jboss.org/maven2</url>
  </repository>
</repositories>
于 2010-04-25T09:02:53.290 に答える
20

2019年現在の依存関係:

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.16.Final</version>
</dependency>

これにより、Bean Validation APIへの依存関係が推移的に取り込まれるため、これを行う必要はありません。

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

追加機能、式言語、およびCDIサポートについては、以下を追加する必要がある場合があります。

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.1-b09</version>
</dependency>

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-cdi</artifactId>
    <version>6.0.16.Final</version>
</dependency>

出典:HibernateValidatorのドキュメント

これらはすべてMavenCentralリポジトリにあるため、JBossリポジトリを追加する必要はありません。

そしてところで、これが私の便利な方法の例です:

public static <T extends Object> void  validate( T object ) throws MigrationException
{
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set<ConstraintViolation<T>> valRes = validator.validate( object );
    if( ! valRes.isEmpty() )
    {
        StringBuilder sb = new StringBuilder("Validation failed for: ");
        if( object instanceof Origin.Wise )
            sb.append( ((Origin.Wise)object).getOrigin() );
        else
            sb.append(object);

        for( ConstraintViolation<T> fail : valRes)
        {
            sb.append("\n  ").append( fail.getMessage() );
        }
        throw new IllegalArgumentException( sb.toString() );
    }
}

これOrigin.WiseはJAXBのようなもの@XmlLocation Locatorです。


2013年(元の投稿)のバージョンは次のとおりです。

    <!-- BeanValidation and Hibernate Validator. -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.0.Final</version>
    </dependency>        
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.1-b08</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-cdi</artifactId>
        <version>5.4.0.Final</version>
    </dependency>
于 2013-06-26T20:06:35.833 に答える
2

以外の代替ソリューションHibernate

概要

javax.validation (validation-api)次の検証ルールですJSR 380 Java Bean Validation Specificationvalidator検証ルールに従って検証を実行するには、検証ルールにが必要です。

そして、hibernate(最も人気のあるもの)、などのさまざまなバリデーターがありますBval

Bval

Bvalは、他にもかなりクールだと思う代替ソリューションですHibernate。そして、ここであなたは私の代替解決策に従うことができます:

MVN

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.bval</groupId>
            <artifactId>bval-jsr</artifactId>
            <version>2.0.2</version>
        </dependency>

実装

静的バリデーターを作成する

...

import javax.validation.Validation;
import javax.validation.Validator;

import org.apache.bval.jsr.ApacheValidationProvider;
...

private static final Validator validator;

static {
        validator = Validation.byProvider(ApacheValidationProvider.class).configure().buildValidatorFactory()
                .getValidator();
    }

どうぞ!!!。
繰り返しますが、バリデーターは、他のバリデーターに簡単に切り替えることができる単なるバリデーターです。

Pro&Con

それほど人気はありませんが、気に入るはずです。

于 2019-07-02T02:15:56.287 に答える
0

Mavenプロジェクトの場合のみ、検証アノテーションにこの依存関係を使用する必要があります。

   <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.16.Final</version>
    </dependency>
于 2022-03-03T18:43:19.390 に答える