有没有什么方法可以禁用 ORMLite 检查使用 DataType.SERIALIZABLE 声明的字段是否实现了可序列化?

2024-03-25

问题标题已经说明了一切。我有一个这样声明的字段:

    @DatabaseField(canBeNull=false,dataType=DataType.SERIALIZABLE)
    List<ScheduleTriggerPredicate> predicates = Collections.emptyList();

根据上下文,predicates可以包含空列表或返回的不可变列表Collections.unmodifiableList(List)ArrayList作为其参数。我因此know所讨论的对象是可序列化的,但我无法告诉编译器(因此 ORMLite)它是可序列化的。因此我得到这个异常:

SEVERE: Servlet /ADHDWeb threw load() exception
java.lang.IllegalArgumentException: Field class java.util.List for field
    FieldType:name=predicates,class=ScheduleTrigger is not valid for type 
    com.j256.ormlite.field.types.SerializableType@967d5f, maybe should be
    interface java.io.Serializable

现在,如果有某种方法可以禁用检查,那么一切显然都会正常工作......


FM 中详细记录了定义自定义数据类型:

http://ormlite.com/docs/custom-data-types http://ormlite.com/docs/custom-data-types

您可以延长SerializableType类和@Override the isValidForField(...)方法。在这种情况下,这将序列化集合。

public class SerializableCollectionsType extends SerializableType {
    private static LocalSerializableType singleton;
    public SerializableCollectionsType() {
        super(SqlType.SERIALIZABLE, new Class<?>[0]);
    }
    public static LocalSerializableType getSingleton() {
        if (singleton == null) {
            singleton = new LocalSerializableType();
        }
        return singleton;
    }
    @Override
    public boolean isValidForField(Field field) {
        return Collection.class.isAssignableFrom(field.getType());
    }
}

要使用它,您必须替换dataType with persisterClass in @DatabaseField:

@DatabaseField(canBeNull = false,
    persisterClass = SerializableCollectionsType.class)
List<ScheduleTriggerPredicate> predicates = Collections.emptyList();

我已添加到单元测试中以显示可用的代码。这是github 变更 https://github.com/j256/ormlite-core/commit/6a9e49b8154f233fe551e13aea0892d0afaa31e6.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有什么方法可以禁用 ORMLite 检查使用 DataType.SERIALIZABLE 声明的字段是否实现了可序列化? 的相关文章

  • “集合已修改...”问题

    我有一个函数可以检查对象列表以查看它们是否已被单击并相应地触发 OnClick 事件 我相信该功能工作正常 但我遇到了问题 当我挂接到其中一个 OnClick 事件并删除该元素并将其插入到列表中的不同位置 该程序的典型功能 时 我收到 集合
  • 哪种 Java 集合认为排列是相等的?

    我想创建可能包含重复值的集合 没有特定的顺序 换句话说 1 1 2 2 1 1 1 2 1 事实上 我想要一组这些集合 所以如果我尝试添加这两个集合 1 1 2 and 2 1 1 第二 add 实际上不会做任何事情 是否有一个标准集合已经
  • 迭代 EnumMap#entrySet

    枚举结束Map entrySet对于所有 Map 实现 特别是 EnumMap 不能按预期工作 IdentityHashMap这是 Josh Bloch 的示例代码谜题演示 谜题 5 http strangeloop2010 com sys
  • Java 中保存最后 N 个元素的大小受限队列

    关于 Java 库的一个非常简单快速的问题 是否有一个现成的类可以实现Queue具有固定的最大大小 即它始终允许添加元素 但它会默默地删除头元素以为新添加的元素提供空间 当然 手动实现它很简单 import java util Linked
  • Java ArrayList 和 LinkedList - 在末尾添加元素实现细节

    我对为什么 arraylist 比链表更快的理解是 使用 arraylist 基本上只需要一个操作 更新末尾数组元素的引用 而使用链表你必须做更多的事情 例如创建一个新节点 更新 2 个引用 遍历链表并更新最后一个节点以指向新节点等 但是我
  • MongoDB 和 Nest.js:为集合定义自定义名称

    我有一个这样的架构 Schema export class Pais extends Document Prop raw codigo type String index true unique true Prop descripcion
  • Java Stream:通过布尔谓词分为两个列表

    我有一个清单employees 他们有isActive布尔字段 我想分employees分为两个列表 activeEmployees and formerEmployees 是否可以使用 Stream API 来实现 最尖端的方法是什么 C
  • 具有多列的 ORMLITE ORDER_BY

    我在用ormlite在我最近的android项目中 我想对表中多列 比如两列 的查询进行排序 我怎样才能做到这一点 这是单个订单的代码 QueryBuilder
  • Java 7 中是否有针对 ImmutableEnumSet 的计划?

    我希望拥有 EnumSet 的所有效率并传递它 而不用担心有人会修改它 您可以使用 Google 集合 Guava 获得不可变的 EnumSet 资源 番石榴主页 http code google com p guava libraries
  • C 语言标准集合在哪里?

    我现在致力于学习 C 我擅长 Python PHP Bash 但我决定我不能流利地使用 C 但是我无法想象在没有列表和哈希的语言中工作 也许我 我只是有点操之过急 但肯定有 标准 集合库 我在 GNU 标准库中没有看到任何内容 有什么建议吗
  • Map:如何获取与某个值关联的所有键?

    给定一个 Map 如何查找与特定值关联的所有键 例如 Map
  • Hashcode() 与 Equals()

    我有下面这两门课 class Emp implements Comparable String name job public String getName return name public void setName String na
  • 将收藏计数器变成字典

    我有一个由该函数产生的集合结果 Counter df email address 它返回每个单独的电子邮件地址及其重复次数 Counter nan 1618 email protected cdn cgi l email protectio
  • “冲突可序列化”和“冲突等效”有什么区别?

    在数据库理论中 冲突可序列化 和 冲突等效 有什么区别 我的教科书有一个关于可序列化冲突的部分 但掩盖了冲突等价性 这些可能都是我熟悉的概念 但我不熟悉术语 所以我正在寻找解释 DBMS 中的冲突可以定义为两个或多个不同的事务访问同一变量
  • 在java中迭代集合时从集合中删除项目

    我希望能够在迭代集合时从集合中删除多个元素 最初 我希望迭代器足够聪明 能够让下面的简单解决方案发挥作用 Set
  • 在 Java 中打印 HashMap

    我有一个HashMap private HashMap
  • 如何在无 null 设计中实现 List、Set 和 Map?

    当您在大多数情况下可以返回 null 空对象以避免 null 时 这很好 但是像 Collection 这样的对象呢 在爪哇 Map回报null if key in get key 地图上没有找到 我能想到的最好的避免方法null在这种情况
  • 为什么 VectorBuilder 位于 scala.collections.immutable 包中?

    VectorBuilder在同一源文件中定义为Vector Vector是不可变的并且在scala collections immutable包 因此构建器位于同一个包中 据我所知 CanBuildFrom uses a VectorBui
  • 在 Ruby on Rails 中渲染部分集合正在乘以项目

    我想在 Ruby on Rails 的页面中显示项目列表 我使用部分 in my index html erb我有的文件 in list news html erb I have div class news div
  • Oracle 12 对 SQL 中的本地集合类型有问题吗?

    长话短说 我建议讨论下面看到的代码 运行时 Oracle 11 编译器引发 PLS 00306 调用 PIPE TABLE 时参数提示的数量或类型错误 PLS 00642 SQL 语句中不允许使用本地集合类型 Oracle 12编译下面的包

随机推荐