Xodus 属性 的 "subIterable" 方法是什么?
What is the "subIterable" method for a Xodus property?
我有这个自定义 属性 类型:
public class EmbeddedEntityIterable implements Serializable, ByteIterable {
@NotNull
@Override
public ByteIterable subIterable(int offset, int length) {
return null;
}
@Override
public int compareTo(@NotNull ByteIterable o) {
return 0;
}
}
Xodus 如何使用 subIterable
和 compareTo
? return @NotNull
方法上的 NULL 值是否安全?这个 EmbeddedEntityIterable
基本上是一个 Map<String,Comparable>
的底层,它也是一个非常嵌套的 JSON 对象的表示。
return null
不安全,必须执行 non-trivial compareTo
。否则,您将无法将 ByteIterable
用作键(对于任何类型的商店)和值(对于可以具有键重复项的商店)。如果您使用 EntityStores API 和您的 ByteIterable
作为 属性 值,那么您肯定必须实现这些方法,因为 ByteIterable
将在后台用作键在 属性 值索引中。
对于 ByteIterable
的自定义实现,最好继承自具有基本方法实现的 ByteIterableBase abstract class。
此外,如果您定义自定义 属性 类型,则您必须定义顺序以支持 out-of-the-box 功能,例如排序、搜索值或在值范围内搜索。如果您不需要这些功能,那么将此类数据保存在 blob 或 blob 字符串中而不是属性中可能是有意义的。
我有这个自定义 属性 类型:
public class EmbeddedEntityIterable implements Serializable, ByteIterable {
@NotNull
@Override
public ByteIterable subIterable(int offset, int length) {
return null;
}
@Override
public int compareTo(@NotNull ByteIterable o) {
return 0;
}
}
Xodus 如何使用 subIterable
和 compareTo
? return @NotNull
方法上的 NULL 值是否安全?这个 EmbeddedEntityIterable
基本上是一个 Map<String,Comparable>
的底层,它也是一个非常嵌套的 JSON 对象的表示。
return null
不安全,必须执行 non-trivial compareTo
。否则,您将无法将 ByteIterable
用作键(对于任何类型的商店)和值(对于可以具有键重复项的商店)。如果您使用 EntityStores API 和您的 ByteIterable
作为 属性 值,那么您肯定必须实现这些方法,因为 ByteIterable
将在后台用作键在 属性 值索引中。
对于 ByteIterable
的自定义实现,最好继承自具有基本方法实现的 ByteIterableBase abstract class。
此外,如果您定义自定义 属性 类型,则您必须定义顺序以支持 out-of-the-box 功能,例如排序、搜索值或在值范围内搜索。如果您不需要这些功能,那么将此类数据保存在 blob 或 blob 字符串中而不是属性中可能是有意义的。