Java 当为null时,camel bindy不映射第一列
这与我的情况类似:Java 当为null时,camel bindy不映射第一列,java,csv,apache-camel,bindy,Java,Csv,Apache Camel,Bindy,这与我的情况类似: @CsvRecord(separator = "\\t", skipFirstLine = true) public class Inventory { @DataField(pos = 1, required=false) private String vendor; @DataField(pos = 2, required=false) private String sku; @DataField(pos = 3, requi
@CsvRecord(separator = "\\t", skipFirstLine = true)
public class Inventory {
@DataField(pos = 1, required=false)
private String vendor;
@DataField(pos = 2, required=false)
private String sku;
@DataField(pos = 3, required=false)
private Integer stock;
}
如果第2列或第3列为空,则根本没有问题,这些字段只有一个空值(假设->是一个选项卡表示)
具有绑定结果,如
[{
vendor: "Vendor1",
sku: "123",
stock: 5
},
{
vendor: "Vendor1",
sku: null,
stock: 10
}]
到目前为止,还不错,但当第一列为null时,绑定器将第2列值(sku)分配给第1列绑定属性“vendor”,第3列值分配给第2列绑定属性(sku),绑定到第3列的实际属性保持为null:
VENDOR->SKU->STOCK
null->123->5
Vendor1->166->10
是这样做的:
[{
vendor: "123",
sku: "5",
stock: null
},
{
vendor: "Vendor1",
sku: "166",
stock: 10
}]
我知道我总是可以将其设置为“required=true”(这是在第一个位置上实现的),但如果第二个值不为null,它仍然不会失败,因为该值被分配给第一个值;另一方面,在我们的例子中,将列required设置为true不是一个好主意,因为一行缺少某些内容,整个文件被拒绝,所以我们的策略是手动验证那些对我们来说是必需的字段,这样我们就可以正确地记录它并处理所有列中更正的任何行
这是我对此库的依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bindy</artifactId>
<version>2.11.1</version>
</dependency>
我检查了CsvRecord注释和DataField注释中的所有属性,盲目地尝试了其中一些属性,希望能解决这个问题
有人知道为什么会这样吗?或者,如果这是一个在以后版本中解决的库问题?或者有什么建议我可以试试
当然,对于我能得到的任何帮助或回答,我都会提前表示感谢既然已经有2.170的可用,请考虑更新,以检查这个问题是否已经被固定在这里。谢谢汤姆,我现在尝试不同版本的骆驼BiDy依赖性,从下一个我们到最近的一个。(因为我已经首先尝试了上一个版本,但另一个camel依赖项出现错误,并且这个应用程序都是基于camel的,所以它充满了camel依赖项,并且在没有完整集成测试的情况下无法对camel版本进行完整更新,我们现在没有时间)。我会发布它的任何更新。谢谢如果您使用的是camel 2.11.1,那么您不应该更新单个组件,因为这可能存在不兼容性。如果可能,对所有camel库进行全面更新。但是我们会看到单个更新是否有效。既然已经有2.170可用,请考虑更新,以检查这个问题是否已经被固定在这里。谢谢汤姆,我现在尝试不同版本的骆驼BiDy依赖性,从下一个到最近一个。(因为我已经首先尝试了上一个版本,但另一个camel依赖项出现错误,并且这个应用程序都是基于camel的,所以它充满了camel依赖项,并且在没有完整集成测试的情况下无法对camel版本进行完整更新,我们现在没有时间)。我会发布它的任何更新。谢谢如果您使用的是camel 2.11.1,那么您不应该更新单个组件,因为这可能存在不兼容性。如果可能,对所有camel库进行全面更新。但我们将看看单个更新是否有效。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bindy</artifactId>
<version>2.11.1</version>
</dependency>
camel-bindy-2.11.1.jar