实体列表(Hibernate)列表的Criteriabuilder和Ismember



好吧,我正在尝试做一些奇怪的事情。我正在尝试使用Criteriabuilder和CriteriaQuery返回所有在该实体上包含给定对象的实体。我一直在与此相提并论的几个小时,相关文档很少,也不是特别有用。任何帮助将不胜感激。

类的相关摘录如下。

@Entity
public class Entry {
    @ManyToMany(fetch=FetchType.EAGER)
    private List<Tag> tags = new ArrayList<Tag>();
}
@Entity
public class Tag {
    @Size(min=1,max=63)
    @Column(unique=true)
    @NotNull
    private String name;
}
@Repository
@Transactional
public class EntryDaoImpl extends RefineableDao implements EntryDao{
    @Autowired
    private EntityManager em;
    @Override
    public List<Entry> search(final Map<String,Object> refinement){
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<Entry> query = cb.createQuery(Entry.class);
        Root<Entry> entry = query.from(Entry.class);
        query.orderBy(cb.desc(entry.get("createTime")));
        query.select(entry);
        query.where(this.refineQuery(refinement, cb, query, entry));
        return em.createQuery(query).getResultList();
    }
}

基本上,我需要能够找到包含给定标签的条目。我知道,如果这是我唯一的改进,这可以做到这一点,但是对于相同的标准,还有很多其他改进,而且我从不保证哪些精炼将要经历。

如果您真的需要了解后端,请查看http://pastebin.com/qjnkyrrh。这是一个可怕的杂乱无章的混乱。

好吧。我找到了为什么我在CriteriaBuilder.isMember()遇到问题的答案。问题是Path需要为Path<? extends Collection>。这样,ismember()就像我希望它一样的工作。

相关内容

  • 没有找到相关文章

最新更新