在scala类

时间:2016-02-24 15:59:12

标签: java scala

我有scala + java项目,其中一些用Java编写的POJO类和用Scala编写的控制器。 所以我有一个实体:

@Entity @Table
public class SomeEntity extends GenericEntity { 
  //... some fields
  @OneToMany(...)
  private List<SomeOtherEntity> someOtherEntities;
  // getters, setters
}

以及以下scala代码:

val otherEntity = // construct object of type SomeOtherEntity 
val entity = //got entity from database
entity.getSomeOtherEntities.add(otherEntity)

最后一行在java.lang.UnsupportedOperationException处生成java.util.AbstractList.add。我使用了一些调试器魔法并发现entity.getSomeOtherEntities的类型为Wrappers$SeqWrapper。是否有简单的scala方法将项添加到scala中的java列表?我可以构造新的java.util.List并将所有项添加到它,然后在实体类中使用字段设置器,但有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

最后我解决了这个问题。问题是我在某处使用了scala.collection.JavaConverters并在Scala .asJava上执行了List。我的应用程序不需要特别快速,所以我设法用这个替换SomeEntity.someOtherEntities字段的setter来解决它:

public void setSomeOtherEntities(List<SomeOtherEntity> someOtherEntities) {
    this.someOtherEntities = new ArrayList<>();
    this.someOtherEntities.addAll(someOtherEntities);
}