相关疑难解决方法(0)

JPA:查找具有一组通用标签的所有文章

我有以下实体:

@Entity
public class Article{
    @Id
    private String id;

    @ManyToMany(cascade = CascadeType.PERSIST)
    private Set<Tag> tags;

//non-relevant code
}

@Entity 
public class Tag{
    @Id
    private String id;

    @Basic
    @Column(nullable = false, unique = true, length = 32)
    private String name;

//non-relevant code
}
Run Code Online (Sandbox Code Playgroud)

如何有效地查找Article具有共同set标记的所有实体?

天真的方法是找到属于每个文章的所有文章,tag然后返回intersection所有文章集.就像是:

public Set<Article> findByTags(Set<Tag> tags){
    Set<Article> result = new HashSet<>();

    if(tags.isEmpty()){
        return result;
    }

    Iterator<Tag> i = tags.iterator();
    result.addAll(i.next().getArticles());

    while(i.hasNext() && !result.isEmpty()){
        result.retainAll(i.next());
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是" 有没有更有效的方法来做到这一点,这不需要从数据库获取可能的所有文章,如此? …

java persistence jpa criteriaquery

2
推荐指数
1
解决办法
842
查看次数

标签 统计

criteriaquery ×1

java ×1

jpa ×1

persistence ×1