我有两个类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中的整个字段不匹配。
答案 0 :(得分:0)
更改位置以匹配长度,但您仍然没有基类集中的字段,它们将为null,但将设置子类字段。请查看此网站,了解如何完成此操作。http://people.apache.org/~dkulp/camel/bindy.html
答案 1 :(得分: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类解组文本文件,结果将是序列号和age和firstname将设置为model。 132Sundar 如果使用camel使用Employee2类解组文本文件,结果将是lastname将设置为model。 Moorthy
这是使用camel 2.16.0,如果有任何其他问题,请告诉我,但不会设置基类中的字段。