我有一个用Java定义的POJO
@Data
@Builder
public class JavaItem {
private String name;
}
我有Scala的代码
case class Record(name: String)
def asJavaItem(record: Record): JavaItem = {
JavaItem.builder().build()
}
def recordDatasetToListJavaItem(record: Dataset[Record]): java.util.List[JavaItem] = {
implicit val encoder: Encoder[JavaItem] = Encoders.bean(classOf[JavaItem])
record.map(asJavaItem).collectAsList() // this fails
}
val recordDataset = Seq(Record("name")).toDS()
recordDatasetToListJavaItem(recordDataset)
我收到以下错误消息:
org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 24, Column 11: failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 24, Column 11: No applicable constructor/method found for zero actual parameters; candidates are: "JavaItem(java.lang.String)"
为什么我会收到这个错误?我怀疑这是编码器的问题.我如何正确地将Dataset[Record]
映射到JavaItem
的列表?