gpt4 book ai didi

java - CriteriaBuilder 和实体列表的 isMember (Hibernate)

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:34 26 4
gpt4 key购买 nike

好吧,我正在尝试做一些很奇怪的事情。我正在尝试使用 CriteriaBuilder 和 CriteriaQuery 返回实体集合中包含给定对象的所有实体。我已经为此绞尽脑汁好几个小时了,相关文档很少而且不是特别有用。任何帮助将不胜感激。

相关类(class)摘录如下。

@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();
}
}

所以基本上,我需要能够找到包含给定标签的条目。我知道如果这是我正在做的唯一改进,那么这可以很简单地完成,但是对同一个 CriteriaQuery 还进行了许多其他改进,并且我永远无法保证将进行哪些改进。

如果您确实需要了解后端,请查看http://pastebin.com/QJnkYRRh 。这是一个可怕的未注释的困惑。

最佳答案

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

关于java - CriteriaBuilder 和实体列表的 isMember (Hibernate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com