我需要使用年龄对学生,员工,患者等不同数据类型的pojo进行排序,并将其存储到数组中。然后使用beanio将其写入平面文件。
通过json,我正在发送可以包含学生,员工和患者数组的请求。我在java端有3个pojo,例如学生,员工,患者,可以存储来自json请求的数据。
我能够合并所有对象,例如学生,雇员,患者,然后将其分类为类的单个数组,该类是学生,雇员,患者(如人类)的基类。我必须进行人类班级学习,以便我可以按年龄区分使用Comparator的所有3个子班级。
class SortbyAge implements Comparator<Human>
{
// Used for sorting in ascending order of
// age
public int compare(Human a, Human b)
{
return a.getAge() - b.getAge();
}
}
到这里一切都很好。 我能够根据年龄对数据进行排序并将其存储到Human Array中。
问题是当我使用beanio将排序的数据写入平面文件时。
**当我将数据写入平面文件时,出现异常以下的异常
org.beanio.BeanWriterException:Bean识别失败:Bean类“ [Lcom.amex.ibm.model.Human;”没有记录或组映射。在当前位置**
我已经将所有4个标记都写入了xml文件,如下所示。
<record name="student" class="com.amex.ibm.model.Student" occurs="0+" maxLength="unbounded">
<field name="name" length="3"/>
<field name="age" length="8"/>
<field name="address" length="15"/>
</record>
<record name="employee" class="com.amex.ibm.model.Employee" occurs="0+" maxLength="unbounded">
<field name="name" length="3"/>
<field name="age" length="8"/>
<field name="address" length="15"/>
</record>
<record name="patient" class="com.amex.ibm.model.Patient" occurs="0+" maxLength="unbounded">
<field name="name" length="3"/>
<field name="age" length="8"/>
<field name="address" length="15"/>
</record>
<record name="human" class="com.amex.ibm.model.Human" occurs="0+" maxLength="unbounded">
<field name="age" length="3"/>
</record>
如何在bean IO中定义父类映射?
答案 0 :(得分:0)
您看到的问题是BeanIO不知道如何映射类型为Human
的数组。您需要将每个单独的对象传递给BeanIO,以将其写出到文件中。通过遍历数组,然后将每个对象传递给BeanIO来进行尝试。
更改
b.write(listFinalArray);
到
for (int i = 0; i < listFinalArray.length; i++) {
b.write(listFinalArray[i]);
}
或更少键入:
for (final Human human : listFinalArray) {
b.write(human);
}