小编Iva*_*van的帖子

检索仅包含允许标记的文档(完全等于)

对于每个搜索请求,我都允许标签列表.例如,

["search", "open_source", "freeware", "linux"]
Run Code Online (Sandbox Code Playgroud)

我想要检索此列表中包含所有标签的文档.我想要检索:

{
    "tags": ["search", "freeware"]
}
Run Code Online (Sandbox Code Playgroud)

并排除

{
    "tags": ["search", "windows"]
}
Run Code Online (Sandbox Code Playgroud)

因为list不包含windows标签.

在Elasticsearch文档中有一个完全等于的示例:

https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_multiple_exact_values.html

首先,我们包含一个维护标签数量的字段:

{ "tags" : ["search"], "tag_count" : 1 }
{ "tags" : ["search", "open_source"], "tag_count" : 2 }
Run Code Online (Sandbox Code Playgroud)

其次,我们使用需要的tag_count进行检索

GET /my_index/my_type/_search
{
    "query": {
        "filtered" : {
            "filter" : {
                 "bool" : {
                    "must" : [
                        { "term" : { "tags" : "search" } }, 
                        { "term" : { "tags" : "open_source" } }, 
                        { "term" : { …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

10
推荐指数
1
解决办法
332
查看次数

在osgi-container中找不到hibernate-validator的El实现

我尝试在osgi容器中运行Hibernate验证器.

<dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>2.2.4</version>
</dependency>
<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>javax.el</artifactId>
    <version>2.2.4</version>
</dependency>

<dependency>
    <groupId>org.apache.servicemix.bundles</groupId>
    <artifactId>org.apache.servicemix.bundles.hibernate-validator</artifactId>
    <version>5.0.2.Final_1</version>
</dependency>

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.7</version>
</dependency>

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.8.1</version>
</dependency>


public class HibernateValidationProviderResolver implements ValidationProviderResolver {
    @Override
    public List<ValidationProvider<?>> getValidationProviders() {
        List<ValidationProvider<?>> list = new ArrayList<>(1);
        list.add(new HibernateValidator());
        return list;
    }
}


Configuration<?> configuration = Validation.byDefaultProvider().providerResolver(
    new HibernateValidationProviderResolver()
).configure();

ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
Validator validator = validatorFactory.getValidator();
Set<ConstraintViolation<Group>> constraintViolations = validator.validate(group);


public class Group {
    @NotNull
    @Size(min=2)
    private String title;
}
Run Code Online (Sandbox Code Playgroud)

尝试运行,equinox控制台没问题:

10      RESOLVED …
Run Code Online (Sandbox Code Playgroud)

java osgi hibernate hibernate-validator apache-servicemix

6
推荐指数
1
解决办法
5790
查看次数

如何在服务层中组合JSR-303和Spring Validator类?

我有一些模特课

public class Account {

    @Email
    private String email;

    @NotNull
    private String rule;
}
Run Code Online (Sandbox Code Playgroud)

和弹簧验证器

public class AccountValidator implements Validator {

    @Override
    public boolean supports(Class aClass) {
        return Account.class.equals(aClass);
    }

    @Override
    public void validate(Object obj, Errors errors) {
        Account account = (Account) obj;
        ValidationUtils.rejectIfEmpty(errors, "email", "email.required");
        ValidationUtils.rejectIfEmpty(errors, "rule", "rule.required");

        complexValidateRule(account.getRule(), errors);
    }

    private void complexValidateRule(String rule, Errors errors) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我在我的服务中运行

AccountValidator validator = new AccountValidator();
Errors errors = new BeanPropertyBindingResult(account, "account");
validator.validate(account, errors);
Run Code Online (Sandbox Code Playgroud)

我可以在验证过程中添加约束@Email,@ NotNull(JSR-303)并且不在AccountValidator中描述这些规则吗?

我知道Spring控制器中的@Valid是如何工作的,但服务层是什么?可能吗?如何以适当的方式进行此类验证?我可以使用Hibernate …

spring service-layer bean-validation spring-validator

5
推荐指数
1
解决办法
1572
查看次数