gpt4 book ai didi

java - JPA Criteria API 加入

转载 作者:行者123 更新时间:2023-11-30 08:35:18 26 4
gpt4 key购买 nike

请帮我一下。我已经阅读了大约 10 篇文章,但不了解 join moment。我有 2 个表:

public class News implements Serializable {
@Id
@GeneratedValue (generator = "increment")
@GenericGenerator (name = "increment", strategy = "increment")
private int id;
@Column
private String name;
@Column
private Date created;
@Column
private String data;
@ManyToOne (cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn (name = "category_id")
private NewsCategoryDict category;
// getters, setters
}

public class NewsCategoryDict implements Serializable {
@Id
@GeneratedValue (generator = "increment")
@GenericGenerator (name = "increment", strategy = "increment")
private int id;
@Column
private String name;
@OneToMany (mappedBy = "category", cascade = CascadeType.ALL)
private List<News> news = new ArrayList<>();
}

我想要一个像这样的查询

SELECT * FROM news, categorynews WHERE news.category_id = categorynews.id;

然后用jsp得到结果

    <div id="list_news">
<c:forEach items="${news}" var="news">
<h5>${news.id} : ${news.name} - ${news.created} ; ${news.data} (${news.category.name})</h5>
</c:forEach>
</div>

而且我无法理解这个 JOIN with Criteria API。你能帮助我吗 ?尝试使用此代码段,但出现错误

public List<News> getAll() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<News> cq = cb.createQuery(News.class);
Root<News> rootFromNews = cq.from(News.class);
Join<NewsCategoryDict, News> join = rootFromNews.join("category");
cq.select(join);

return em.createQuery(cq).getResultList();
}

PropertyNotFoundException: Property 'created' not found on type ru.r1k0.spring.model.NewsCategoryDict

最佳答案

假设您要返回与 NewsCategoryDict 实例关联的 News 实例,您的条件查询应如下所示:

public List<News> getAll() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<News> cq = cb.createQuery(News.class);
Root<News> rootFromNews = cq.from(News.class);
Join<News, NewsCategoryDict> join = rootFromNews.join("category"); // #1
cq.select(rootFromNews); // #2

return em.createQuery(cq).getResultList();
}

修改的行用#1#2 注释标记。

查询应该返回所有具有匹配的 NewsCategoryDictNews;但是与 NewsCategoryDict 记录无关的 News 记录将不会被返回。

关于java - JPA Criteria API 加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274211/

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