我不确定这是否可行,但有没有办法在查询中使用时覆盖Google App Engine属性使用的Comparable?例如,文档中有一个属性类型PhoneNumber
(基本上是一个String),它有一个方法:
public int compareTo(PhoneNumber o)
Specified by:
compareTo in interface java.lang.Comparable<PhoneNumber>
我无法找到它的确切运作方式。有没有办法覆盖Comparable,以便以我选择的方式对其进行比较?
由于
答案 0 :(得分:1)
没有。但您可以按照自己的方式对任何集合进行排序。因为你用objectify标记了这个:
@Entity
public class Thing {
private static final Comparator<PhoneNumber> SPECIAL_COMPARATOR = // make one
// ... id, etc
SortedSet<PhoneNumber> phoneNumbers = new TreeSet<>(SPECIAL_COMPARATOR);
}
如果您需要以特定方式索引的电话号码,这将无法帮助您(尽管收集属性索引排序反正会非常奇怪)。如果您有一个索引电话号码属性并且想要控制索引排序,则需要创建自己的PhoneNumber
,转换为正确排序的字符串表示形式。您需要使用Objectify注册自己的PhoneNumberTranslatorFactory
。这并不难;查看示例的源代码。