所以,我有一些 OrmLite 4.41 模型类,它们最初由 GSON 填充(为清楚起见进行了简化)
public class Crag {
@DatabaseField(id=true) private int id;
@ForeignCollectionField(eager=true, maxEagerLevel=2) @SerializedName("CragLocations")
private Collection<CragLocation> cragLocations;
}
public class CragLocation {
@DatabaseField(id=true) private int id;
@DatabaseField private int locationType;
@DatabaseField(foreign=true, foreignAutoCreate=true, foreignAutoRefresh=true)
private Crag crag;
@DatabaseField(foreign=true, foreignAutoCreate=true, foreignAutoRefresh=true)
private Location location;
}
public class Location {
@DatabaseField(id=true) private int id;
@DatabaseField private BigDecimal latitude;
@DatabaseField private BigDecimal longitude;
}
然后我正在测试事情是否按我的预期发生......
@Test
public void canFindById() {
Crag expected = ObjectMother.getCrag431();
_repo.createOrUpdate(template431);
Crag actual = _repo.getCragById(431);
assertThat(actual, equalTo(template431));
}
他们不平等……为什么不呢?因为在 GSON (in ObjectMother.getCrag431()
) 创建的对象中,Crag 的 cragLocations 字段是一个 ArrayList,而在 OrmLite 加载的对象中,它是一个 EagerForeignCollection
我在这里错过了一个技巧吗?有没有办法告诉 OrmLite 我希望 Collection 是什么类型?我是否应该有一个方法将集合作为数组列表返回并测试其是否相等?
提前致谢