Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Collections 有没有办法禁用ORMLite';s检查用DataType.SERIALIZABLE声明的字段是否实现SERIALIZABLE?_Collections_Ormlite_Serializable - Fatal编程技术网

Collections 有没有办法禁用ORMLite';s检查用DataType.SERIALIZABLE声明的字段是否实现SERIALIZABLE?

Collections 有没有办法禁用ORMLite';s检查用DataType.SERIALIZABLE声明的字段是否实现SERIALIZABLE?,collections,ormlite,serializable,Collections,Ormlite,Serializable,题目差不多就说明了一切。我有一个字段声明如下: @DatabaseField(canBeNull=false,dataType=DataType.SERIALIZABLE) List<ScheduleTriggerPredicate> predicates = Collections.emptyList(); 现在,如果有某种方法可以禁用检查,那么显然一切都可以正常工作。定义自定义数据类型在FM中有很好的文档记录: 您可以扩展SerializableType类和@

题目差不多就说明了一切。我有一个字段声明如下:

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

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

定义自定义数据类型在FM中有很好的文档记录:

您可以扩展
SerializableType
类和
@覆盖
isValidForField(…)
方法。在本例中,这将序列化集合

公共类SerializableCollectionType扩展SerializableType{
私有静态LocalSerializableType单例;
public SerializableCollectionType(){
super(SqlType.SERIALIZABLE,新类[0]);
}
公共静态LocalSerializableType getSingleton(){
if(singleton==null){
singleton=新的LocalSerializableType();
}
返回单身;
}
@凌驾
公共布尔值isValidForField(字段){
返回Collection.class.isAssignableFrom(field.getType());
}
}
要使用此选项,您必须在
@DatabaseField
中将
数据类型
替换为
持久类

@DatabaseField(canBeNull=false,
persisterClass=SerializableCollectionType.class)
列表谓词=Collections.emptyList();

我已经添加到单元测试中,以显示与此相关的工作代码。以下是定义自定义数据类型的。

在FM中有很好的文档记录:

您可以扩展
SerializableType
类和
@覆盖
isValidForField(…)
方法。在本例中,这将序列化集合

公共类SerializableCollectionType扩展SerializableType{
私有静态LocalSerializableType单例;
public SerializableCollectionType(){
super(SqlType.SERIALIZABLE,新类[0]);
}
公共静态LocalSerializableType getSingleton(){
if(singleton==null){
singleton=新的LocalSerializableType();
}
返回单身;
}
@凌驾
公共布尔值isValidForField(字段){
返回Collection.class.isAssignableFrom(field.getType());
}
}
要使用此选项,您必须在
@DatabaseField
中将
数据类型
替换为
持久类

@DatabaseField(canBeNull=false,
persisterClass=SerializableCollectionType.class)
列表谓词=Collections.emptyList();

我已经添加到单元测试中,以显示与此相关的工作代码。这是电话号码。

谢谢。我应该想到这一点。。。事后看来这很明显。@Gray什么是LocalSerializableType?当我尝试创建此方法时,IDE显示了一些错误。代码被设计为@DrMido示例。
LocalSerializableType
就是您定义的。谢谢。我应该想到这一点。。。事后看来这很明显。@Gray什么是LocalSerializableType?当我尝试创建此方法时,IDE显示了一些错误。代码被设计为@DrMido示例。
LocalSerializableType
是您定义的。
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