【问题标题】:org.datanucleus.sco.backed.ArrayList cannot be cast to java.util.Setorg.datanucleus.sco.backed.ArrayList 不能转换为 java.util.Set
【发布时间】:2014-03-10 17:56:54
【问题描述】:

自从 4 天前,在随机的短时间内,我部署的应用程序抛出了这个错误:

org.datanucleus.sco.backed.ArrayList 无法转换为 java.util.Set

我们正在使用 GWT 2.4 / Java 1.7(我们最近从 1.6 迁移到 1.7)

在检索或持久化带有字符串集的实体时会发生这种情况:

import java.util.HashSet;
import java.util.Set;
...
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class DbAccount {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;
...
    @Persistent
    private Set<String> accounts;
...
    public DbAccount(SerAccount account) throws Exception {
        ...
        this.accounts= new HashSet<String>();
        ...
        key = KeyFactory.createKey(DbCuentas.class.getSimpleName(), this.id);
    }
}

我检查了我的整个项目中是否有对 org.datanucleus.sco.backed.ArrayList 的引用,但它不存在。

有什么想法吗?

【问题讨论】:

  • 你解决了吗?我有同样的问题。您是否将这些实体作为另一个实体的一部分来获取?含义: DbAccount 是否存在于另一个实体中?我没有得到足够一致的这些错误来调试它。当我们的服务器负载较高时,它们会随机出现。
  • 越来越频繁了。 “解决方案”(至少 98%)是将我们的实例从 F1 升级到 F4。
  • 很高兴看到你回来回答我的评论(尽管已经快 2 年了;))! :D 此类问题的奇怪错误消息!

标签: java google-app-engine gwt arraylist google-cloud-datastore


【解决方案1】:

这听起来可能很愚蠢,但您是否尝试过使用 List 而不是 Set

再次查看文档后,我无法从 Google 中找到除 List 之外的任何带有 Collection 的示例。

阅读您的问题,看起来 JPA datanucleus impl 确实在使用他们自己的 ArrayList 实现,无论您做什么。我不知道为什么这个问题是随机发生的......

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 2011-09-02
    • 2011-01-15
    • 2014-10-14
    • 1970-01-01
    • 2021-11-02
    • 2021-01-25
    • 2014-09-10
    • 2018-12-13
    相关资源
    最近更新 更多