我正在尝试使用 ActiveMQ 进行 eXist-db 复制。当我为消费者实例配置时,它需要执行这样的 XQuery 来注册 JMS 接收器:
xquery version "3.0";
import module namespace replication="http://exist-db.org/xquery/replication" at "java:org.exist.jms.xquery.ReplicationModule";
let $jmsConfiguration := map {
"java.naming.factory.initial"
:= "org.apache.activemq.jndi.ActiveMQInitialContextFactory",
"java.naming.provider.url" := "tcp://localhost:61616",
"connection-factory" := "ConnectionFactory",
"destination" := "dynamicTopics/eXistdb-replication-example",
"subscriber.name" := "SubscriptionId",
"connection.client-id" := "ClientId"
}
return
replication:register($jmsConfiguration)
Run Code Online (Sandbox Code Playgroud)
当我运行这个查询时,它返回一个类似标题的错误。我是 XQuery 的新手,你能帮我检查一下吗?
我有一个名为Citizen:
public class Citizen {
private Long id;
private String name;
private Long code;
//get,set
}
Run Code Online (Sandbox Code Playgroud)
我用于使用过滤器Specification进行搜索:Citizen
public class CitizenFilter(){
private String name;
private Long code;
// get, set
}
public class CitizenSpecification implements Specification<Citizen>{
private CitizenFilter filter;
// get, set
@Override
public Predicate toPredicate(Root<Citizen> root, CriteriaQuery<?> query, CriteriaBuilder builder)
{
List<Predicate> restrictions = new ArrayList<>();
if(filter.getName != null){
restrictions.add(builder.like(root.get("name"), "%"+filter.getName()+"%"));
}
if(filter.getCode != null){
restrictions.add(builder.like(root.get("code"), "%"+filter.getCode ()+"%"));
}
// disjunction().....
// return expression
} …Run Code Online (Sandbox Code Playgroud)