1

CommonRequest と AccountRequest の 2 つのクラスがあります。

@FixedLengthRecord(paddingChar=' ',ignoreTrailingChars=true)
public class CommonRequest {

@Id
private String corelationID;

@DataField(pos=1,length=8)
private String cmNumber;

@DataField(pos=2,length=16)
private String accountNumber;

}

そして AccountRequest.java

@FixedLengthRecord(paddingChar=' ',ignoreTrailingChars=true)
public class AccountRequest extends CommonRequest {

@Id
private String corelationID;

@DataField(pos=3,length=14)
private String accountType;

@DataField(pos=4,length=15)
private String accountLocation;

}

cmNumberaccountNumberaccountTypeaccountLocationのようなレコードを非整列化しようとすると

一般的なリクエストを適切にアンマーシャリングしますが、AccountRequest をアンマーシャリングしようとすると、一般的なリクエストに残された位置から続行するのではなく、最初から位置を取ります。

そして、これは AccountRequest のフィールド全体を一致させません。

4

2 に答える 2

0

これをテキスト レコードとして考えてください 01 32 Sundar Moorthy

@FixedLengthRecord(length = 20,ignoreTrailingChars=true)
public class Employee {
@DataField(pos = 1, length = 2)
private int serialNo;
@DataField(pos = 4, length = 2)
private int age;
@DataField(pos = 7, length = 6)
private String firstName;
....getters and setters
}

@FixedLengthRecord(length=20)
public class Employee2 extends Employee{
@DataField(pos=14, length=7)
private String lastName;
....
getters and setters..
}

Camel を使用して Employee クラスを使用してテキスト ファイルをアンマーシャリングすると、シリアル番号、年齢、名がモデルに設定されます。132Sundar で、キャメルを使用して Employee2 クラスを使用してテキスト ファイルをアンマーシャリングすると、姓がモデルに設定されます。ムーシー

これは camel 2.16.0 の場合です。さらに問題がある場合はお知らせください。基本クラスのフィールドは設定されません。

于 2016-01-03T17:29:28.727 に答える