Java 在实体的数组属性中查找可比较的值

Java 在实体的数组属性中查找可比较的值,java,xodus,Java,Xodus,如何查找作为数组的属性是否包含值,Xodus默认可用的是txn.find(entityType、propertyName、comparableValue)要查找值,但是,查找数组属性是否包含值的最佳方法是什么。假设我有这个: public class EmbeddedArrayIterable implements Serializable, ByteIterable { } 其中我需要比较给定的值,例如“cat”,是否在数组中。EmbeddedArrayInterable的实现应该是什么?因

如何查找作为数组的属性是否包含值,Xodus默认可用的是
txn.find(entityType、propertyName、comparableValue)
要查找值,但是,查找数组属性是否包含值的最佳方法是什么。假设我有这个:

public class EmbeddedArrayIterable implements Serializable, ByteIterable {
}
其中我需要比较给定的值,例如“cat”,是否在数组中。
EmbeddedArrayInterable
的实现应该是什么?因此,它将能够返回实体数组中该“cat”字符串所在的
实体

因此,我们可以做到:

// This property is a `EmbeddedArrayIterable` 
// which is a serialized JSON like `["cat","tiger","lion"]`
String propertyName = "keywords"; 
String comparableValue = "cat";
EntityIterable cats = txn.find(entityType, propertyName, comparableValue);

如果定义自定义特性类型,则只能通过其值的一部分来查找实体。在您的情况下,使用开箱即用的
ComparableSet
值类型是有意义的。将属性值设置为一组项:

final compariableset propValue=新的compariableset();
propValue.addItem(“cat”);
propValue.addItem(“老虎”);
propValue.addItem(“lion”);
entity.setProperty(“关键字”,propValue);
然后,您可以使用
实体#getProperty(..)
获取值,转换为
可比集
,并根据需要修改该集。您也可以仅通过集合中的单个项来查找实体:

EntityIterable cat=txn.find(entityType,“关键字”,“cat”);

能否将可比as类型属性放入
可比集合
?示例:
ComparableSet
?您的意思是不想指定类型参数吗?不知道是什么原因。