1
模型中选择我有休眠数据库有三个型号:最简单的方法使用JPQL
Article - which has is part of multiple categories (EDIT).
Category - which contains articles, and is part of an App
App - which has different categories
我想选择其中有一个特定的应用程序的类别中的所有文章。 所以我想创造的东西,如:
find("ANY categories.app = ?", app).fetch();
事情是这样的工作对我来说与CoreData,但明显不是JPA,我似乎并没有能够找到如何做到这一点。
编辑: 澄清: 的文章:
@ManyToMany
public List<Category> categories;
在类别:
@ManyToOne
public App app;
@ManyToMany(mappedBy = "categories")
public List<Article> articles;
在应用
:
@OneToMany(mappedBy = "app")
public List<Category> categories;
当我尝试这样做时,我得到:java.lang.IllegalArgumentException:org.hibernate.QueryException:非法尝试使用元素属性引用[app]取消引用集合[article0_.id.categories] [SELECT a from models.Article一个WHERE a.lastUpdate>? AND a.categories.app =?]。 (类别而不是类别,因为它是多对多的关系) –
因此,文章有很多类别,是吗?你说一个类别包含几篇文章。所以这是一个ManyToMany关联。在这种情况下,你需要一个明确的连接:从文章中选择一个内部连接a.categories c,其中c.app =?。这在我链接到的文档中有很好的解释。阅读它,这就是你将学习的方式。 –
当你提到内部连接时,我感到不寒而栗,过去的一段时间里的糟糕回忆......谢谢!我不记得了,不知道从哪里开始。有时候我会用一种'老式'的方式来编写SQL代码,而这种代价很昂贵。所以谢谢你指出这是方式,它的工作原理!该文件非常有帮助! (并且抱歉没有明确说明情况) –