Java 在实体的数组属性中查找可比较的值
如何查找作为数组的属性是否包含值,Xodus默认可用的是Java 在实体的数组属性中查找可比较的值,java,xodus,Java,Xodus,如何查找作为数组的属性是否包含值,Xodus默认可用的是txn.find(entityType、propertyName、comparableValue)要查找值,但是,查找数组属性是否包含值的最佳方法是什么。假设我有这个: public class EmbeddedArrayIterable implements Serializable, ByteIterable { } 其中我需要比较给定的值,例如“cat”,是否在数组中。EmbeddedArrayInterable的实现应该是什么?因
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
?您的意思是不想指定类型参数吗?不知道是什么原因。