Jooq と JPA の @Column アノテーションを利用したフィールド長の検証

アイザック・チルコップ

JSR 303 検証を利用して、ユーザーが入力したデータを検証しようとしています。私が実装しようとしている検証の 1 つは、各フィールドの入力値のサイズが対応する列の最大サイズを超えていないことを確認することです。

フィールドをデータベース列にマップするために@Column、次のようにJPA の注釈を利用しています。

@ComplexValidation
public class Person {

    @Column(table = "PERSON_DETAILS", name = "FIRST_NAME")
    private String firstName;

}

@ComplexValidationPerson クラスアノテーションは、私が実装しようとしている JSR 303 カスタム制約バリデーターであり、基本的に次の手順を実行しようとしています。

  1. 注釈で@Column注釈が付けられたクラス内のすべてのフィールドを取得します
  2. 注釈からテーブル名を抽出し、それを使用して、テーブルを表す対応する JOOQ 生成クラスをロードします。
  3. 注釈からフィールド名を抽出し、それを使用して対応する列のデータ型とサイズをロードします

Jooq で、テーブル名に基づいて Jooq 生成クラスを取得できる方法はありますか? 私の最初の試みは以下で見つけることができますがtable(tableName)、TableImpl オブジェクトではなく SQLTable を返すため、機能しません

Column columnAnnotation = field.getDeclaredAnnotation(Column.class);
if (columnAnnotation != null) {
    String tableName = columnAnnotation.table();
    String fieldName = columnAnnotation.name();

    TableField tableField = (TableField) ((TableImpl) table(tableName)).field(fieldName);
    int columnLength = tableField.getDataType().length();

    if (fieldValue.length() > columnLength) {
        constraintValidatorContext
            .buildConstraintViolationWithTemplate("exceeded maximum length")
            .addPropertyNode(field.getName())
            .addConstraintViolation();
    }
}

他の提案は大歓迎です:)

ルーカス・エダー

生成されたスキーマが 1 つだけであると仮定すると (たとえば、PUBLIC)、そこからテーブルにアクセスできます。

Table<?> table = PUBLIC.getTable(tableName);

見る Schema.getTable(String)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Hibernate / JPA-Beanメソッドとフィールドのアノテーション

分類Dev

JOOQを使用したSpring BootとSpring Data JPAの技術的な違い

分類Dev

Hibernate検証アノテーション-少なくとも1つのフィールドがnullでないことを検証します

分類Dev

JPA @ Columnアノテーションでの文字列定数の使用

分類Dev

@Sizeアノテーションを含むフィールド名とその最大長を取得します

分類Dev

JPAアノテーション@Columnの原則は何ですか?フィールドのgetメソッドを呼び出さなかったのですか?

分類Dev

次の検証は、フィールドをnullにできないことを意味しますか?(@Sizeアノテーション)

分類Dev

JPA Springbootの@Entityアノテーションを介してテーブルを生成するときに、フィールドのデータ型を変更する方法はありますか?

分類Dev

コメント/説明を作成するためのJPA @Columnアノテーション

分類Dev

JPAでの@Basic(オプション= false)と@Column(nullable = false)

分類Dev

Spring JPA:アノテーション/ JPQLとの結合時に特定の列を選択します

分類Dev

2つのエンドポイントを「組み合わせる」ときのjavax検証アノテーションの再利用のパターン

分類Dev

HibernateまたはJPAアノテーションを使用して@OneToManyコレクションのサイズを制限することは可能ですか?

分類Dev

SpringアノテーションとJPAアノテーションを持つ2つのテーブル間に外部キー関係があるHTMLフォーム(Thymeleafを使用)からのデータの保存に関する問題

分類Dev

Queryアノテーション内のTimestampフィールドSpring JPAを更新する

分類Dev

アノテーション@Column(nullable = false)と@NotNullの違い

分類Dev

JPAカスケードアノテーションとHibernateカスケードアノテーションの違い

分類Dev

混乱:JPAおよびHibernateでの@NotNullと@Column(nullable = false)

分類Dev

複数のフィールドを使用したSpringカスタムアノテーション検証

分類Dev

複数のフィールドを使用したSpringカスタムアノテーション検証

分類Dev

Spring-Data-JPAのデフォルトメソッドをEntityGraphアノテーションでオーバーライドすると、QueryExceptionが発生します

分類Dev

非エンティティスーパークラス(JARから!)のフィールドを含むJPAアノテーション

分類Dev

JPAアノテーションでjava.util.Mapをマッピングすると、キーと値の列名がオーバーライドされる

分類Dev

jOOQ-fetchAnyとfetchOneの違い

分類Dev

DayToSecondのJooq平均

分類Dev

JPAを使用した起動時のパーティション割り当てとChainedKafkaTransactionManagerについて

分類Dev

JOOQの派生テーブルとしてプレーンSQLを使用する方法

分類Dev

Spring Data JPAの@PersistenceConstructorアノテーションはHibernateと組み合わせて機能しますか?

分類Dev

オプションのフィールドと多くの依存関係を使用したフォーム全体のJSF検証

Related 関連記事

  1. 1

    Hibernate / JPA-Beanメソッドとフィールドのアノテーション

  2. 2

    JOOQを使用したSpring BootとSpring Data JPAの技術的な違い

  3. 3

    Hibernate検証アノテーション-少なくとも1つのフィールドがnullでないことを検証します

  4. 4

    JPA @ Columnアノテーションでの文字列定数の使用

  5. 5

    @Sizeアノテーションを含むフィールド名とその最大長を取得します

  6. 6

    JPAアノテーション@Columnの原則は何ですか?フィールドのgetメソッドを呼び出さなかったのですか?

  7. 7

    次の検証は、フィールドをnullにできないことを意味しますか?(@Sizeアノテーション)

  8. 8

    JPA Springbootの@Entityアノテーションを介してテーブルを生成するときに、フィールドのデータ型を変更する方法はありますか?

  9. 9

    コメント/説明を作成するためのJPA @Columnアノテーション

  10. 10

    JPAでの@Basic(オプション= false)と@Column(nullable = false)

  11. 11

    Spring JPA:アノテーション/ JPQLとの結合時に特定の列を選択します

  12. 12

    2つのエンドポイントを「組み合わせる」ときのjavax検証アノテーションの再利用のパターン

  13. 13

    HibernateまたはJPAアノテーションを使用して@OneToManyコレクションのサイズを制限することは可能ですか?

  14. 14

    SpringアノテーションとJPAアノテーションを持つ2つのテーブル間に外部キー関係があるHTMLフォーム(Thymeleafを使用)からのデータの保存に関する問題

  15. 15

    Queryアノテーション内のTimestampフィールドSpring JPAを更新する

  16. 16

    アノテーション@Column(nullable = false)と@NotNullの違い

  17. 17

    JPAカスケードアノテーションとHibernateカスケードアノテーションの違い

  18. 18

    混乱:JPAおよびHibernateでの@NotNullと@Column(nullable = false)

  19. 19

    複数のフィールドを使用したSpringカスタムアノテーション検証

  20. 20

    複数のフィールドを使用したSpringカスタムアノテーション検証

  21. 21

    Spring-Data-JPAのデフォルトメソッドをEntityGraphアノテーションでオーバーライドすると、QueryExceptionが発生します

  22. 22

    非エンティティスーパークラス(JARから!)のフィールドを含むJPAアノテーション

  23. 23

    JPAアノテーションでjava.util.Mapをマッピングすると、キーと値の列名がオーバーライドされる

  24. 24

    jOOQ-fetchAnyとfetchOneの違い

  25. 25

    DayToSecondのJooq平均

  26. 26

    JPAを使用した起動時のパーティション割り当てとChainedKafkaTransactionManagerについて

  27. 27

    JOOQの派生テーブルとしてプレーンSQLを使用する方法

  28. 28

    Spring Data JPAの@PersistenceConstructorアノテーションはHibernateと組み合わせて機能しますか?

  29. 29

    オプションのフィールドと多くの依存関係を使用したフォーム全体のJSF検証

ホットタグ

アーカイブ