57.2.3. 3.DataField


DataField アノテーションは、フィールドの プロパティーを定義します。各データフィールドは、レコード内のその位置、タイプ(文字列、int、date、…)、およびオプションでパターンで識別されます。

Expand
アノテーション名レコードの種類レベル

DataField

all

プロパティー

Expand
パラメーター名タイプ必須/任意デフォルト値Info

pos

int

 

入力レコードのデータの位置は、1 (必須)から開始する必要があります。position パラメーターを参照してください。

アライメント

文字列

 

R

テキストを右または左に合わせます。<tt>R</tt> または <tt>L</tt> の値を使用します。

clip

boolean

 

false

固定の長さを使用するときに許可される長さを超えた場合は、フィールドのデータをクリップします。

columnName

文字列

  

ヘッダー列の名前(任意)。プロパティーの名前をデフォルトとして使用します。CsvRecordgenerateHeaderColumns = trueがある場合にのみ適用されます。

decimalSeparator

文字列

  

BigDecimal 番号で使用する 10 進数のセパレーター

defaultValue

文字列

  

値が設定されていない場合のフィールドのデフォルト値

delimiter

文字列

  

フィールドに変数の長さがある場合に使用される任意の区切り文字

groupingSeparator

文字列

  

123,456.789 のようにグループ化して番号付けしたい場合は、BigDecimal 番号で使用する Separator をグループ化します。

impliedDecimalSeparator

boolean

 

false

指定した場所に 10 進数のポイントが暗示されているかどうかを示します。

長さ

int

 

0

レコードが固定の長さに設定されている場合のデータブロックの長さ(文字数)

lengthPos

int

 

0

このフィールドで想定される固定の長さを定義するレコード内のデータフィールドを識別します。

メソッド

文字列

  

このようなカスタマイズを DataField に適用するために呼び出すメソッド名。これは datafield 自体の メソッドである必要があります。または、クラスのメソッドの静的完全修飾名を指定する必要があります(例:ユニットテスト org.apache.camel.dataformat.bindy.csv.BindySimpleCsvFunctionWithExternalMethodTest.replaceToBar を参照)。

name

文字列

  

フィールドの名前(オプション)

paddingChar

char

  

レコードが固定の長さに設定されている場合の pad への文字

pattern

文字列

  

Java フォーマッター(例による SimpleDateFormat)がデータを変換するために使用するパターン(オプション)。パターンを使用する場合は、バインドデータ形式でロケールを設定することが推奨されます。us などの既知のロケールに設定するか、または default を使用してプラットフォームのデフォルトロケールを使用します。

position

int

 

0

生成された出力メッセージのフィールドの位置(1 から開始する必要があります)。CSV 生成(出力メッセージ)のフィールドの位置が入力位置(pos)とは異なる比較する必要がある場合に使用する必要があります。pos パラメーターを参照してください。

精度

int

 

0

作成される \{@link java.math.BigDecimal} 番号の精度

必須

boolean

 

false

フィールドが必須かどうかを示します。

丸め

文字列

 

CEILING

BigDecimal 値をラウンド/スケーリングするために使用されるラウンドモード:UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN,HALF_EVEN, UNNECESSARY e.g : Number = 123456.789, Precision = 2, Rounding = CEILING Result : 123456.79

timezone

文字列

  

使用するタイムゾーン。

trim

boolean

 

false

値をトリミングする必要があるかどうかを示します。

ケース 1: pos

このパラメーター/属性は CSV レコードのフィールドの位置を表します。

Position

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}
Copy to Clipboard Toggle word wrap

この例では分かるように、位置は 1 から始まりますが、クラス Order で 5 に進みます。2 から 4 までの数字は、Client クラスで定義されます(ここで参照)。

別のモデルクラスで位置が続行されます。

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

case 2 : pattern

パターンではデータの形式を補完または検証できる

パターン

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    // pattern used during parsing or when the date is created
    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 3: 精度

精度は、数値の 10 進数部分を定義する場合に便利です。

精度

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @Link
    private Client client;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 4: 位置は出力とは異なります。

position 属性は、生成された CSV レコードにフィールドを配置する方法をバインドします。デフォルトでは、使用される位置は属性 pos で定義される位置に対応します。位置が異なる場合(つまり、マーシャリングからマーシャリングの比較)、位置 を使用してこれを示すことができます。

以下に例を示します。

出力では位置は異なります。

@CsvRecord(separator = ",", isOrdered = true)
public class Order {

    // Positions of the fields start from 1 and not from 0

    @DataField(pos = 1, position = 11)
    private int orderNr;

    @DataField(pos = 2, position = 10)
    private String clientNr;

    @DataField(pos = 3, position = 9)
    private String firstName;

    @DataField(pos = 4, position = 8)
    private String lastName;

    @DataField(pos = 5, position = 7)
    private String instrumentCode;

    @DataField(pos = 6, position = 6)
    private String instrumentNumber;
}
Copy to Clipboard Toggle word wrap

アノテーション @DataField のこの属性は、@CsvRecord アノテーションの属性 isOrdered = true と組み合わせて使用する必要があります。

ケース 5 : 必須

フィールドが必須の場合は、required 属性を true に設定して使用します。

必須

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2, required = true)
    private String clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, required = true)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

このフィールドがレコードに存在しない場合は、パーサーにより以下の情報を含むエラーが発生します。

Some fields are missing (optional or mandatory), line :
Copy to Clipboard Toggle word wrap

case 6 : trim

フィールドに、処理される前に削除する必要がある、および/または末尾にスペースがある場合、単に属性 trim を true に設定します。

Trim

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1, trim = true)
    private int orderNr;

    @DataField(pos = 2, trim = true)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

case 7 : defaultValue

フィールドが定義されていない場合は、は defaultValue 属性で指定された値を使用します。

デフォルト値

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, defaultValue = "Barin")
    private String lastName;
}
Copy to Clipboard Toggle word wrap

case 8 : columnName

@CsvRecord にアノテーション generateHeaderColumns = true がある場合にのみ、プロパティーの列名を指定します。

列名

@CsvRecord(separator = ",", generateHeaderColumns = true)
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5, columnName = "ISIN")
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;
}
Copy to Clipboard Toggle word wrap

この属性は、オプションのフィールドにのみ適用されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat