java - 在 hazel 转换中使用 sql 谓词的嵌套获取/更新函数

标签 java sql serialization hazelcast

是否可以在嵌套的对象列表中查询(即)让我们考虑以下示例,

class A implements Serializable{
   public int id;
   public List<B> incomingBs;
   public A(int x){ this.id=x; }
}

class B implements Serializable{
   public int id;
   public List<A> outgoingAs;
   public B(int x){ this.id=x; }
}

我开始知道如果一个对象包含在另一个对象中,我们可以使用以下查询在 hazel cast sql 谓词中进行查询,

System.out.println(map.values(new SqlPredicate("something > 0 and complexMember.someString like 'val%'")));

但是如果A类有B类的列表,如何使用sql谓词在列表中查询?

或者有其他方法可以实现这个用例。

感谢和问候, 哈利

最佳答案

我使用了谓词的概念,它可以实现到任何类并在其中编写我们自己的逻辑。

查看我的代码,

public class ListPredicate implements Predicate<String,Object>{

private Set<String> switchIds = null;

public ListPredicate(Set<String> switchIds) {
    this.switchIds = switchIds;
}

@Override
public boolean apply(Entry<String, Object> mapEntry) {
    Container container = (Container) mapEntry.getValue();
    for(String switchId : container.getFrameSwitchIdList()) {
        if(switchIds.contains(switchId)) {
            return true;
        }
    }
    return false;
}

}

使用您自己的谓词作为查询,

Collection<Container> containerList = containerMap.values(new ListPredicate(switchIds));

关于java - 在 hazel 转换中使用 sql 谓词的嵌套获取/更新函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866526/

相关文章:

sql - 在 sql EOF 中声明 bash 变量

java - 选择正确的文件格式

java - "MVC"并根据从 "Control"类中选择的 jTabbedpane 控制 jMenubar

java - 仅对连接字符串的一部分进行样式设置 (Android)

java - RuntimeException 找不到布局 XML 资源

sql - 如何将 SQL 中的循环转换为基于 Set 的逻辑

sql - ORA-00600 运行 ALTER 命令时?

java - 不可序列化父类的可序列化子类

java - Avro 序列化对象不可序列化问题

javascript - Vaadin 生成具有更改的列名称的网格