我有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并将所有项添加到它,然后在实体类中使用字段设置器,但有一种简单的方法吗?
答案 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);
}