1

我有两个类 CommonRequest 和 AccountRequest

@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 类解组文本文件,结果将是姓氏将设置为模型。穆蒂

这是骆驼 2.16.0 ,如果有任何进一步的问题,请告诉我,但不会设置基类中的字段。

于 2016-01-03T17:29:28.727 回答
0

更改位置以匹配长度,但仍然不会设置基类中的字段,它们将为空,但将设置子类字段。检查此站点以了解如何完成。http://people.apache.org/~dkulp/camel/bindy.html

于 2015-12-29T19:35:07.183 回答